import sendRegisterUserRequest from '@/requests/sendRegisterUserRequest'; import CreateUserValidationSchema from '@/services/User/schema/CreateUserValidationSchema'; import { zodResolver } from '@hookform/resolvers/zod'; import { useRouter } from 'next/router'; import { FC, useState } from 'react'; import { useForm } 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 FormTextInput from './ui/forms/FormTextInput'; const RegisterUserForm: FC = () => { const router = useRouter(); const { reset, register, handleSubmit, formState } = useForm< z.infer >({ resolver: zodResolver(CreateUserValidationSchema) }); const { errors } = formState; const [serverResponseError, setServerResponseError] = useState(''); const onSubmit = async (data: z.infer) => { try { await sendRegisterUserRequest(data); reset(); router.push('/', undefined, { shallow: true }); } catch (error) { setServerResponseError( error instanceof Error ? error.message : 'Something went wrong. We could not register your account.', ); } }; return (
{serverResponseError && ( )}
First name {errors.firstName?.message}
Last name {errors.lastName?.message}
email {errors.email?.message}
username {errors.username?.message}
password {errors.password?.message}
confirm password {errors.confirmPassword?.message}
Date of birth {errors.dateOfBirth?.message}
); }; export default RegisterUserForm;