'use client'; import { useTransition } from 'react'; import { useRouter } from 'next/navigation'; import { Loader } from 'lucide-react'; import { Recipient } from '@documenso/prisma/client'; import { FieldWithSignature } from '@documenso/prisma/types/field-with-signature'; import { trpc } from '@documenso/trpc/react'; import { useToast } from '@documenso/ui/primitives/use-toast'; import { SigningFieldContainer } from './signing-field-container'; export type DateFieldProps = { field: FieldWithSignature; recipient: Recipient; }; export const DateField = ({ field, recipient }: DateFieldProps) => { const router = useRouter(); const { toast } = useToast(); const [isPending, startTransition] = useTransition(); const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } = trpc.field.signFieldWithToken.useMutation(); const { mutateAsync: removeSignedFieldWithToken, isLoading: isRemoveSignedFieldWithTokenLoading, } = trpc.field.removeSignedFieldWithToken.useMutation(); const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending; const onSign = async () => { try { await signFieldWithToken({ token: recipient.token, fieldId: field.id, value: '', }); startTransition(() => router.refresh()); } catch (err) { console.error(err); toast({ title: 'Error', description: 'An error occurred while signing the document.', variant: 'destructive', }); } }; const onRemove = async () => { try { await removeSignedFieldWithToken({ token: recipient.token, fieldId: field.id, }); startTransition(() => router.refresh()); } catch (err) { console.error(err); toast({ title: 'Error', description: 'An error occurred while removing the signature.', variant: 'destructive', }); } }; return ( {isLoading && (
)} {!field.inserted && (

Date

)} {field.inserted && (

{field.customText}

)}
); };