import useHasPermission from '@hooks/use-has-permission'; import usePreventAutoFocus from '@hooks/use-prevent-auto-focus'; import { authClient } from '@lib/auth-client'; import { m } from '@paraglide/messages'; import { ShieldWarningIcon, TrashIcon } from '@phosphor-icons/react'; import { deleteUserHouse } from '@service/house.api'; import { housesQueries } from '@service/queries'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { Button } from '@ui/button'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@ui/dialog'; import { Label } from '@ui/label'; import { Spinner } from '@ui/spinner'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@ui/table'; import { Tooltip, TooltipContent, TooltipTrigger } from '@ui/tooltip'; import parse from 'html-react-parser'; import { useState } from 'react'; import { toast } from 'sonner'; import RoleBadge from '../avatar/role-badge'; import { Skeleton } from '../ui/skeleton'; type DeleteUserHouseProps = { activeHouse: ReturnType['data']; }; const DeleteUserHouseAction = ({ activeHouse }: DeleteUserHouseProps) => { const [_open, _setOpen] = useState(false); const prevent = usePreventAutoFocus(); const { hasPermission, isLoading } = useHasPermission( 'house', 'delete', true, ); const queryClient = useQueryClient(); const { mutate: deleteHouseMutation, isPending } = useMutation({ mutationFn: deleteUserHouse, onSuccess: () => { queryClient.invalidateQueries({ queryKey: [...housesQueries.all, 'currentUser'], }); _setOpen(false); toast.success(m.houses_page_message_delete_house_success(), { richColors: true, }); }, onError: (error: ReturnError) => { console.error(error); const code = error.code as Parameters< typeof m.backend_message >[0]['code']; toast.error(m.backend_message({ code }), { richColors: true, }); }, }); if (isLoading || !activeHouse) { return ; } const onConfirm = async () => { deleteHouseMutation({ data: { id: activeHouse.id } }); }; if (!hasPermission) return null; return ( e.preventDefault()} onEscapeKeyDown={(e) => e.preventDefault()} >
{m.houses_page_ui_dialog_alert_delete_title({ name: activeHouse.name, })}
{parse(m.houses_page_ui_dialog_alert_delete_description())}
{m.houses_page_ui_view_table_header_email()} {m.houses_page_ui_view_table_header_role()} {activeHouse.members.map((member) => ( {member.user.email} ))}
); }; export default DeleteUserHouseAction;