import * as Tooltip from '@radix-ui/react-tooltip' import { PermissionAction } from '@supabase/shared-types/out/constants' import { observer } from 'mobx-react-lite' import Link from 'next/link' import { useRouter } from 'next/router' import { useState } from 'react' import { Alert, Button, IconEdit, Menu } from 'ui' import { useParams } from 'common/hooks' import CreateBucketModal from 'components/interfaces/Storage/CreateBucketModal' import EditBucketModal from 'components/interfaces/Storage/EditBucketModal' import { StorageBucket } from 'components/interfaces/Storage/Storage.types' import { DeleteBucketModal } from 'components/to-be-cleaned/Storage' import ShimmeringLoader from 'components/ui/ShimmeringLoader' import { useBucketsQuery } from 'data/storage/buckets-query' import { useCheckPermissions } from 'hooks' import BucketRow from './BucketRow' const StorageMenu = () => { const router = useRouter() const { ref, bucketId } = useParams() const [showCreateBucketModal, setShowCreateBucketModal] = useState(false) const [selectedBucketToEdit, setSelectedBucketToEdit] = useState() const [selectedBucketToDelete, setSelectedBucketToDelete] = useState() const canCreateBuckets = useCheckPermissions(PermissionAction.STORAGE_ADMIN_WRITE, '*') const page = router.pathname.split('/')[4] as | undefined | 'policies' | 'settings' | 'usage' | 'logs' const { data, isLoading, isError, isSuccess } = useBucketsQuery({ projectRef: ref }) const buckets = data ?? [] return ( <>
} disabled={!canCreateBuckets} style={{ justifyContent: 'start' }} onClick={() => setShowCreateBucketModal(true)} > New bucket {!canCreateBuckets && (
You need additional permissions to create buckets
)}
{isLoading && (
)} {isError && (
Please refresh to try again.
)} {isSuccess && ( <> {buckets.length === 0 && (
Buckets that you create will appear here
)} {buckets.map((bucket, idx: number) => { const isSelected = bucketId === bucket.id return ( setSelectedBucketToDelete(bucket)} onSelectEditBucket={() => setSelectedBucketToEdit(bucket)} /> ) })} )}

Policies

setShowCreateBucketModal(false)} /> setSelectedBucketToEdit(undefined)} /> setSelectedBucketToDelete(undefined)} /> ) } export default observer(StorageMenu)