import sendEditBeerPostRequest from '@/requests/sendEditBeerPostRequest'; import EditBeerPostValidationSchema from '@/services/BeerPost/schema/EditBeerPostValidationSchema'; import { zodResolver } from '@hookform/resolvers/zod'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { FC, useState } from 'react'; import { useForm, SubmitHandler } from 'react-hook-form'; import { z } from 'zod'; import ErrorAlert from './ui/alerts/ErrorAlert'; import Button from './ui/forms/Button'; 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'; type EditBeerPostSchema = z.infer; interface EditBeerPostFormProps { previousValues: EditBeerPostSchema; } const EditBeerPostForm: FC = ({ previousValues }) => { const router = useRouter(); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(EditBeerPostValidationSchema), defaultValues: previousValues, }); const [error, setError] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const onSubmit: SubmitHandler = async (data) => { try { setIsSubmitting(true); await sendEditBeerPostRequest(data); router.push(`/beers/${data.id}`); } catch (e) { setIsSubmitting(false); if (!(e instanceof Error)) { setError('Something went wrong'); return; } setError(e.message); } }; return (
{error && }
Name {errors.name?.message}
ABV {errors.abv?.message}
IBU {errors.ibu?.message}
Description {errors.description?.message}
Discard Changes
); }; export default EditBeerPostForm;