import sendLoginUserRequest from '@/requests/sendLoginUserRequest'; import LoginValidationSchema from '@/services/User/schema/LoginValidationSchema'; import { zodResolver } from '@hookform/resolvers/zod'; import { useRouter } from 'next/router'; import { useState } from 'react'; import { useForm, SubmitHandler } from 'react-hook-form'; import { z } from 'zod'; import ErrorAlert from '../ui/alerts/ErrorAlert'; 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'; import Button from '../ui/forms/Button'; type LoginT = z.infer; const LoginForm = () => { const router = useRouter(); const { register, handleSubmit, formState, reset } = useForm({ resolver: zodResolver(LoginValidationSchema), defaultValues: { username: '', password: '', }, }); const { errors } = formState; const [responseError, setResponseError] = useState(''); const onSubmit: SubmitHandler = async (data) => { try { await sendLoginUserRequest(data); router.push(`/user/current`); } catch (error) { if (error instanceof Error) { setResponseError(error.message); reset(); } } }; return (
username {errors.username?.message} password {errors.password?.message}
{responseError && }
); }; export default LoginForm;