import usePreventAutoFocus from '@hooks/use-prevent-auto-focus'; import { m } from '@paraglide/messages'; import { ShieldWarningIcon } from '@phosphor-icons/react'; import { usersQueries } from '@service/queries'; import { banUser } from '@service/user.api'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { Button } from '@ui/button'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@ui/dialog'; import { UserWithRole } from 'better-auth/plugins'; import { toast } from 'sonner'; import { Spinner } from '../ui/spinner'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '../ui/table'; import { useBanContext } from './ban-user-dialog'; type BanConfirmProps = { data: UserWithRole; }; const BanUserConfirm = ({ data }: BanConfirmProps) => { const { openConfirm, setOpenConfirm, submitData } = useBanContext(); const queryClient = useQueryClient(); const prevent = usePreventAutoFocus(); const { mutate: banUserMutation, isPending } = useMutation({ mutationFn: banUser, onSuccess: () => { queryClient.refetchQueries({ queryKey: usersQueries.all, }); setOpenConfirm(false); toast.success(m.users_page_message_banned_success({ name: data.name }), { 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, }); }, }); const onConfirm = () => { banUserMutation({ data: submitData }); }; return ( e.preventDefault()} onEscapeKeyDown={(e) => e.preventDefault()} >
{m.users_page_ui_dialog_alert_ban_title()}
{m.users_page_ui_dialog_alert_ban_title()}
{m.users_page_ui_dialog_alert_description_title()} {m.users_page_ui_table_header_name()}: {data.name} {m.users_page_ui_table_header_email()}: {data.email} {m.users_page_ui_form_ban_reason()}: {submitData.banReason} {m.users_page_ui_form_ban_exp()}: {m.exp_time({ time: submitData.banExp.toString() as Parameters< typeof m.exp_time >[0]['time'], })}
); }; export default BanUserConfirm;