'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) && (
)}
>
)
}