import { useState } from 'react'; import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import type { TeamMemberRole } from '@prisma/client'; import { isTeamRoleWithinUserHierarchy } from '@documenso/lib/utils/teams'; import { trpc } from '@documenso/trpc/react'; import { Alert, AlertDescription } from '@documenso/ui/primitives/alert'; import { Button } from '@documenso/ui/primitives/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@documenso/ui/primitives/dialog'; import { useToast } from '@documenso/ui/primitives/use-toast'; import { useCurrentTeam } from '~/providers/team'; export type TeamGroupDeleteDialogProps = { trigger?: React.ReactNode; teamGroupId: string; teamGroupName: string; teamGroupRole: TeamMemberRole; }; export const TeamGroupDeleteDialog = ({ trigger, teamGroupId, teamGroupName, teamGroupRole, }: TeamGroupDeleteDialogProps) => { const [open, setOpen] = useState(false); const { _ } = useLingui(); const { toast } = useToast(); const team = useCurrentTeam(); const { mutateAsync: deleteGroup, isPending: isDeleting } = trpc.team.group.delete.useMutation({ onSuccess: () => { toast({ title: _(msg`Success`), description: _(msg`You have successfully removed this group from the team.`), duration: 5000, }); setOpen(false); }, onError: () => { toast({ title: _(msg`An unknown error occurred`), description: _( msg`We encountered an unknown error while attempting to remove this group. Please try again later.`, ), variant: 'destructive', duration: 10000, }); }, }); return ( !isDeleting && setOpen(value)}> {trigger ?? ( )} Are you sure? You are about to remove the following group from{' '} {team.name}. {isTeamRoleWithinUserHierarchy(team.currentTeamRole, teamGroupRole) ? ( <> {teamGroupName}
) : ( <> You cannot delete a group which has a higher role than you. )}
); };