'use client' import { useRouter, useSearchParams } from 'next/navigation' import { useEffect } from 'react' import Link from 'next/link' import { useForm } from 'react-hook-form' import { yupResolver } from '@hookform/resolvers/yup' import { registerSchema } from 'utils' import { TextField, LoginBtn, HandleResponse, RedirectToLogin, Logo } from '@/components' import { useCreateUserMutation } from '@/store/services' import { useDispatch } from 'react-redux' import { userLogin } from 'store' import { useDisclosure } from '@/hooks' export default function RegisterPage() { //? Assets const [isShowRedirectModal, redirectModalHandlers] = useDisclosure() const dispatch = useDispatch() const { replace } = useRouter() const searchParams = useSearchParams() const redirectTo = searchParams.get('redirectTo') //? Create User const [createUser, { data, isSuccess, isError, isLoading, error }] = useCreateUserMutation() //? Form Hook const { handleSubmit, formState: { errors: formErrors }, reset, setFocus, control, } = useForm({ resolver: yupResolver(registerSchema), defaultValues: { name: '', email: '', password: '', confirmPassword: '' }, }) //? Focus On Mount useEffect(() => { setFocus('name') }, []) //? Handlers const submitHander = async ({ name, email, password }) => { if (name && email && password) { await createUser({ body: { name, email, password }, }) } } const onError = () => { if (error.status === 422) { redirectModalHandlers.open() } } const onSuccess = () => { dispatch(userLogin(data.data.token)) reset() replace(redirectTo || '/') } return ( <> {/* Handle Login Response */} {(isSuccess || isError) && ( )}

注册

注册

我已经有账户了

去登录
) }