diff --git a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx index 5c72734c5b4..368993359f2 100644 --- a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx @@ -40,9 +40,7 @@ export const RegionSelector = ({ const availableRegions = getAvailableRegions(PROVIDERS[cloudProvider].id) const regionsArray = Object.entries(availableRegions) - const { isLoading: isLoadingDefaultRegion } = useDefaultRegionQuery({ - cloudProvider, - }) + const { isLoading: isLoadingDefaultRegion } = useDefaultRegionQuery({ cloudProvider }) return ( RESTRICTED_POOL.includes(x[0])) - .reduce((o, val) => ({ ...o, [val[0]]: val[1] }), {}) - : allRegions + const locations = + useRestrictedPool && restrictedPool + ? Object.entries(allRegions) + .filter((x) => restrictedPool.includes(x[0])) + .reduce((o, val) => ({ ...o, [val[0]]: val[1] }), {}) + : allRegions const distances = Object.keys(locations).map((reg) => { const region: { lat: number; lon: number } = { @@ -74,15 +69,21 @@ export type DefaultRegionError = ResponseError export const useDefaultRegionQuery = ( { cloudProvider, useRestrictedPool }: DefaultRegionVariables, { enabled = true, ...options }: UseQueryOptions = {} -) => - useQuery( +) => { + // [Joshen] Flag allows us to specify restricted regions for users based on percentage + const restrictedPoolFlag = useFlag('defaultRegionRestrictedPool') + const restrictedPool = tryParseJson(restrictedPoolFlag) + + return useQuery( miscKeys.defaultRegion(cloudProvider, useRestrictedPool ?? true), - () => getDefaultRegionOption({ cloudProvider, useRestrictedPool }), + () => getDefaultRegionOption({ cloudProvider, restrictedPool, useRestrictedPool }), { - enabled: enabled && typeof cloudProvider !== 'undefined', + enabled: + enabled && typeof cloudProvider !== 'undefined' && typeof restrictedPool !== 'undefined', retry(failureCount) { return failureCount < 1 }, ...options, } ) +}