Files
supabase/apps/studio/hooks/misc/useSelectedProject.ts
2026-06-23 15:51:26 +10:00

72 lines
2.0 KiB
TypeScript

import { useParams } from 'common'
import { MOCK_HIGH_AVAILABILITY } from './useHighAvailability.constants'
import { useProjectDetailQuery } from '@/data/projects/project-detail-query'
import { PROJECT_STATUS, PROVIDERS } from '@/lib/constants'
export function useSelectedProjectQuery({ enabled = true } = {}) {
const { ref } = useParams()
return useProjectDetailQuery(
{ ref },
{
enabled,
select: (data) => {
return {
...data,
parentRef: data.parent_project_ref ?? data.ref,
...(MOCK_HIGH_AVAILABILITY !== undefined && {
high_availability: MOCK_HIGH_AVAILABILITY,
}),
}
},
}
)
}
export const useIsAwsCloudProvider = () => {
const { data: project } = useSelectedProjectQuery()
const isAws = project?.cloud_provider === PROVIDERS.AWS.id
return isAws
}
export const useIsAwsK8sCloudProvider = () => {
const { data: project } = useSelectedProjectQuery()
const isAwsK8s = project?.cloud_provider === PROVIDERS.AWS_K8S.id
return isAwsK8s
}
export const useIsAwsNimbusCloudProvider = () => {
const { data: project } = useSelectedProjectQuery()
const isAwsNimbus = project?.cloud_provider === PROVIDERS.AWS_NIMBUS.id
return isAwsNimbus
}
export const useIsOrioleDb = () => {
const { data: project } = useSelectedProjectQuery()
const isOrioleDb = project?.dbVersion?.endsWith('orioledb')
return isOrioleDb
}
export const useIsOrioleDbInAws = () => {
const { data: project } = useSelectedProjectQuery()
const isOrioleDbInAws =
project?.dbVersion?.endsWith('orioledb') && project?.cloud_provider === PROVIDERS.AWS.id
return isOrioleDbInAws
}
export { useHighAvailability } from './useHighAvailability'
export const useIsHighAvailability = () => {
const { data: project } = useSelectedProjectQuery()
return project?.high_availability ?? false
}
export const useIsProjectActive = () => {
const { data: project } = useSelectedProjectQuery()
return project?.status === PROJECT_STATUS.ACTIVE_HEALTHY
}