import { PermissionAction } from '@supabase/shared-types/out/constants' import { useRouter } from 'next/router' import { useState } from 'react' import { toast } from 'sonner' import { LOCAL_STORAGE_KEYS } from 'common' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { useOrganizationDeleteMutation } from 'data/organizations/organization-delete-mutation' import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions' import { useLocalStorageQuery } from 'hooks/misc/useLocalStorage' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { Button, Form, Input, Modal } from 'ui' export const DeleteOrganizationButton = () => { const router = useRouter() const { data: selectedOrganization } = useSelectedOrganizationQuery() const { slug: orgSlug, name: orgName } = selectedOrganization ?? {} const [isOpen, setIsOpen] = useState(false) const [value, setValue] = useState('') const [_, setLastVisitedOrganization] = useLocalStorageQuery( LOCAL_STORAGE_KEYS.LAST_VISITED_ORGANIZATION, '' ) const { can: canDeleteOrganization } = useAsyncCheckPermissions( PermissionAction.UPDATE, 'organizations' ) const { mutate: deleteOrganization, isPending: isDeleting } = useOrganizationDeleteMutation({ onSuccess: () => { toast.success(`Successfully deleted ${orgName}`) setLastVisitedOrganization('') router.push('/organizations') }, }) const onValidate = (values: any) => { const errors: any = {} if (!values.orgName) { errors.orgName = 'Enter the name of the organization.' } if (values.orgName.trim() !== orgSlug?.trim()) { errors.orgName = 'Value entered does not match the value above.' } return errors } const onConfirmDelete = async (values: any) => { if (!canDeleteOrganization) { return toast.error('You do not have the required permissions to delete this organization') } if (!orgSlug) return console.error('Org slug is required') deleteOrganization({ slug: orgSlug }) } return ( <>