import EditBreweryPostValidationSchema from '@/services/posts/brewery-post/schema/EditBreweryPostValidationSchema'; import { zodResolver } from '@hookform/resolvers/zod'; import { useRouter } from 'next/router'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; import { FC, useState } from 'react'; import BreweryPostQueryResult from '@/services/posts/brewery-post/schema/BreweryPostQueryResult'; import { sendDeleteBreweryPostRequest, sendEditBreweryPostRequest, } from '@/requests/posts/brewery-post'; import FormError from './ui/forms/FormError'; import FormInfo from './ui/forms/FormInfo'; import FormLabel from './ui/forms/FormLabel'; import FormSegment from './ui/forms/FormSegment'; import FormTextArea from './ui/forms/FormTextArea'; import FormTextInput from './ui/forms/FormTextInput'; interface EditBreweryPostFormProps { breweryPost: z.infer; } const EditBreweryPostForm: FC = ({ breweryPost }) => { const router = useRouter(); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm>({ resolver: zodResolver(EditBreweryPostValidationSchema), defaultValues: { name: breweryPost.name, description: breweryPost.description, id: breweryPost.id, dateEstablished: breweryPost.dateEstablished, }, }); const [isDeleting, setIsDeleting] = useState(false); const onSubmit = async (data: z.infer) => { await sendEditBreweryPostRequest({ breweryPostId: breweryPost.id, body: data }); await router.push(`/breweries/${breweryPost.id}`); }; const handleDelete = async () => { setIsDeleting(true); await sendDeleteBreweryPostRequest({ breweryPostId: breweryPost.id }); await router.push('/breweries'); }; return (
Name {errors.name?.message} Description {errors.description?.message}
); }; export default EditBreweryPostForm;