'use client'; import { Button } from '@usesend/ui/src/button'; import { Input } from '@usesend/ui/src/input'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from '@usesend/ui/src/dialog'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@usesend/ui/src/form'; import { api } from '~/trpc/react'; import { useState } from 'react'; import { Edit } from 'lucide-react'; import { z } from 'zod'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { toast } from '@usesend/ui/src/toaster'; const contactBookSchema = z.object({ name: z.string().min(1, { message: 'Name is required' }), }); export const EditContactBook: React.FC<{ contactBook: { id: string; name: string }; }> = ({ contactBook }) => { const [open, setOpen] = useState(false); const updateContactBookMutation = api.contacts.updateContactBook.useMutation(); const utils = api.useUtils(); const contactBookForm = useForm>({ resolver: zodResolver(contactBookSchema), defaultValues: { name: contactBook.name || '', }, }); async function onContactBookUpdate( values: z.infer, ) { updateContactBookMutation.mutate( { contactBookId: contactBook.id, ...values, }, { onSuccess: async () => { utils.contacts.getContactBooks.invalidate(); setOpen(false); toast.success('Contact book updated successfully'); }, onError: async (error) => { toast.error(error.message); }, }, ); } return ( (_open !== open ? setOpen(_open) : null)} > Edit Contact Book
( Name {formState.errors.name ? : null} )} />
); }; export default EditContactBook;