import { PermissionAction } from '@supabase/shared-types/out/constants' import { useRouter } from 'next/router' import { useState } from 'react' import { toast } from 'sonner' import { useOrganizationDeleteMutation } from 'data/organizations/organization-delete-mutation' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' import { Button, Form, Input, Modal } from 'ui' const DeleteOrganizationButton = () => { const router = useRouter() const selectedOrganization = useSelectedOrganization() const { slug: orgSlug, name: orgName } = selectedOrganization ?? {} const [isOpen, setIsOpen] = useState(false) const [value, setValue] = useState('') const canDeleteOrganization = useCheckPermissions(PermissionAction.UPDATE, 'organizations') const { mutate: deleteOrganization, isLoading: isDeleting } = useOrganizationDeleteMutation({ onSuccess: () => { toast.success(`Successfully deleted ${orgName}`) router.push('/projects') }, }) const onValidate = (values: any) => { const errors: any = {} if (!values.orgName) { errors.orgName = 'Enter the name of the organization.' } if (values.orgName !== orgSlug) { 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 ( <>