useAnalyticsBucketWrapperInstance.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { useMemo } from 'react'
  2. import { getAnalyticsBucketFDWName } from './AnalyticsBucketDetails.utils'
  3. import { WRAPPER_HANDLERS } from '@/components/interfaces/Integrations/Wrappers/Wrappers.constants'
  4. import {
  5. getWrapperMetaForWrapper,
  6. wrapperMetaComparator,
  7. } from '@/components/interfaces/Integrations/Wrappers/Wrappers.utils'
  8. import { useFDWsQuery } from '@/data/fdw/fdws-query'
  9. import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
  10. export const useAnalyticsBucketWrapperInstance = (
  11. { bucketId }: { bucketId?: string },
  12. options?: { enabled?: boolean }
  13. ) => {
  14. const { data: project, isPending: isLoadingProject } = useSelectedProjectQuery()
  15. const defaultEnabled = options?.enabled ?? true
  16. const { data, isPending: isLoadingFDWs } = useFDWsQuery(
  17. {
  18. projectRef: project?.ref,
  19. connectionString: project?.connectionString,
  20. },
  21. { enabled: defaultEnabled && !!bucketId }
  22. )
  23. const icebergWrapper = useMemo(() => {
  24. return data
  25. ?.filter((wrapper) =>
  26. wrapperMetaComparator(
  27. { handlerName: WRAPPER_HANDLERS.ICEBERG, server: { options: [] } },
  28. wrapper
  29. )
  30. )
  31. .find((w) => w.name === getAnalyticsBucketFDWName(bucketId ?? ''))
  32. }, [data, bucketId])
  33. const icebergWrapperMeta = getWrapperMetaForWrapper(icebergWrapper)
  34. return {
  35. data: icebergWrapper,
  36. meta: icebergWrapperMeta,
  37. isLoading: isLoadingProject || isLoadingFDWs || !bucketId,
  38. }
  39. }