import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { useLimits } from '@documenso/ee/server-only/limits/provider/client'; import { trpc as trpcReact } 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, } from '@documenso/ui/primitives/dialog'; import { useToast } from '@documenso/ui/primitives/use-toast'; type DocumentRestoreDialogProps = { id: number; open: boolean; onOpenChange: (_open: boolean) => void; onRestore?: () => Promise | void; documentTitle: string; teamId?: number; canManageDocument: boolean; }; export const DocumentRestoreDialog = ({ id, open, onOpenChange, onRestore, documentTitle, canManageDocument, }: DocumentRestoreDialogProps) => { const { toast } = useToast(); const { refreshLimits } = useLimits(); const { _ } = useLingui(); const { mutateAsync: restoreDocument, isPending } = trpcReact.document.restoreDocument.useMutation({ onSuccess: async () => { void refreshLimits(); toast({ title: _(msg`Document restored`), description: _(msg`"${documentTitle}" has been successfully restored`), duration: 5000, }); await onRestore?.(); onOpenChange(false); }, onError: () => { toast({ title: _(msg`Something went wrong`), description: _(msg`This document could not be restored at this time. Please try again.`), variant: 'destructive', duration: 7500, }); }, }); return ( !isPending && onOpenChange(value)}> Restore Document {canManageDocument ? ( You are about to restore "{documentTitle}" ) : ( You are about to unhide "{documentTitle}" )} {canManageDocument ? ( The document will be restored to your account and will be available in your documents list. ) : ( The document will be unhidden from your account and will be available in your documents list. )} ); };