import { CreateUserValidationSchemaWithUsernameAndEmailCheck } from '@/services/users/auth/schema/CreateUserValidationSchemas'; import { zodResolver } from '@hookform/resolvers/zod'; import { useRouter } from 'next/router'; import { FC } from 'react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; import createErrorToast from '@/util/createErrorToast'; import toast from 'react-hot-toast'; import { sendRegisterUserRequest } from '@/requests/users/auth'; 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(CreateUserValidationSchemaWithUsernameAndEmailCheck) }); const { errors } = formState; const onSubmit = async ( data: z.infer, ) => { try { const loadingToast = toast.loading('Registering user...'); await sendRegisterUserRequest(data); reset(); router.push('/', undefined, { shallow: true }); toast.remove(loadingToast); toast.success('User registered!'); } catch (error) { createErrorToast({ toast, error, }); } }; return (
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;