'use client'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; import { type Field, type Recipient, type Signature, SigningStatus, } from '@documenso/prisma/client'; import { trpc } from '@documenso/trpc/react'; import { Button } from '@documenso/ui/primitives/button'; import { DataTable } from '@documenso/ui/primitives/data-table'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@documenso/ui/primitives/form/form'; import { Input } from '@documenso/ui/primitives/input'; import { useToast } from '@documenso/ui/primitives/use-toast'; const ZAdminUpdateRecipientFormSchema = z.object({ name: z.string().min(1), email: z.string().email(), }); type TAdminUpdateRecipientFormSchema = z.infer; export type RecipientItemProps = { recipient: Recipient & { Field: Array< Field & { Signature: Signature | null; } >; }; }; export const RecipientItem = ({ recipient }: RecipientItemProps) => { const { toast } = useToast(); const router = useRouter(); const form = useForm({ defaultValues: { name: recipient.name, email: recipient.email, }, }); const { mutateAsync: updateRecipient } = trpc.admin.updateRecipient.useMutation(); const onUpdateRecipientFormSubmit = async ({ name, email }: TAdminUpdateRecipientFormSchema) => { try { await updateRecipient({ id: recipient.id, name, email, }); toast({ title: 'Recipient updated', description: 'The recipient has been updated successfully', }); router.refresh(); } catch (error) { toast({ title: 'Failed to update recipient', description: error.message, variant: 'destructive', }); } }; return (
( Name )} /> ( Email )} />

Fields

{row.original.id}
, }, { header: 'Type', accessorKey: 'type', cell: ({ row }) =>
{row.original.type}
, }, { header: 'Inserted', accessorKey: 'inserted', cell: ({ row }) =>
{row.original.inserted ? 'True' : 'False'}
, }, { header: 'Value', accessorKey: 'customText', cell: ({ row }) =>
{row.original.customText}
, }, { header: 'Signature', accessorKey: 'signature', cell: ({ row }) => (
{row.original.Signature?.typedSignature && ( {row.original.Signature.typedSignature} )} {row.original.Signature?.signatureImageAsBase64 && ( Signature )}
), }, ]} />
); };