import { PermissionAction } from '@supabase/shared-types/out/constants' import { useRouter } from 'next/router' import { UseFormReturn } from 'react-hook-form' import { useParams } from 'common' import { NoPermission } from 'components/ui/NoPermission' import Panel from 'components/ui/Panel' import { useOrganizationsQuery } from 'data/organizations/organizations-query' import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { Badge, FormControl_Shadcn_, FormField_Shadcn_, Select_Shadcn_, SelectContent_Shadcn_, SelectGroup_Shadcn_, SelectItem_Shadcn_, SelectTrigger_Shadcn_, SelectValue_Shadcn_, } from 'ui' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { OrgNotFound } from '../Organization/OrgNotFound' import { CreateProjectForm } from './ProjectCreation.schema' interface OrganizationSelectorProps { form: UseFormReturn } export const OrganizationSelector = ({ form }: OrganizationSelectorProps) => { const router = useRouter() const { slug } = useParams() const { data: currentOrg } = useSelectedOrganizationQuery() const { can: isAdmin } = useAsyncCheckPermissions(PermissionAction.CREATE, 'projects') const { data: organizations, isSuccess: isOrganizationsSuccess } = useOrganizationsQuery() const isInvalidSlug = isOrganizationsSuccess && currentOrg === undefined const orgNotFound = (organizations?.length ?? 0) > 0 && isInvalidSlug return ( ( {(organizations?.length ?? 0) > 0 && ( { field.onChange(slug) router.push(`/new/${slug}`) }} value={field.value} defaultValue={field.value} > {organizations?.map((x) => (
{x.name} {x.plan.name}
))}
)}
)} /> {isOrganizationsSuccess && !isAdmin && !orgNotFound && ( )} {orgNotFound && }
) }