mirror of
https://github.com/supabase/supabase.git
synced 2026-07-03 22:54:19 +08:00
* refactor(studio): remove unpaginated buckets list from useBucketPolicyCount * refactor(studio): remove deprecated useBucketsQuery
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import { useCallback, useMemo } from 'react'
|
|
|
|
import { extractBucketNameFromDefinition } from 'components/interfaces/Storage/Storage.utils'
|
|
import { useDatabasePoliciesQuery } from 'data/database-policies/database-policies-query'
|
|
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
|
|
|
|
export function useBucketPolicyCount() {
|
|
const { data: project, isPending: isProjectPending } = useSelectedProjectQuery()
|
|
const { data: policiesData = [], isPending: isPoliciesPending } = useDatabasePoliciesQuery({
|
|
projectRef: project?.ref,
|
|
connectionString: project?.connectionString,
|
|
schema: 'storage',
|
|
})
|
|
|
|
const policyCountByBucket = useMemo(() => {
|
|
const countMap = new Map<string, number>()
|
|
for (const policy of policiesData) {
|
|
if (policy.table !== 'objects') continue
|
|
const bucketName =
|
|
extractBucketNameFromDefinition(policy.definition) ??
|
|
extractBucketNameFromDefinition(policy.check)
|
|
if (bucketName) {
|
|
countMap.set(bucketName, (countMap.get(bucketName) ?? 0) + 1)
|
|
}
|
|
}
|
|
return countMap
|
|
}, [policiesData])
|
|
|
|
const getPolicyCount = useCallback(
|
|
(bucketName: string) => policyCountByBucket.get(bucketName) ?? 0,
|
|
[policyCountByBucket]
|
|
)
|
|
|
|
return { getPolicyCount, isLoading: isProjectPending || isPoliciesPending }
|
|
}
|