import { NextPage } from 'next'; import { SubmitHandler, useForm } from 'react-hook-form'; import { useEffect } from 'react'; import { useRouter } from 'next/router'; import { z } from 'zod'; import { zodResolver } from '@hookform/resolvers/zod'; import FormError from '@/components/ui/forms/FormError'; import FormInfo from '@/components/ui/forms/FormInfo'; import FormLabel from '@/components/ui/forms/FormLabel'; import FormSegment from '@/components/ui/forms/FormSegment'; import FormTextInput from '@/components/ui/forms/FormTextInput'; import Layout from '@/components/ui/Layout'; import LoginValidationSchema from '@/services/user/schema/LoginValidationSchema'; import sendLoginUserRequest from '@/requests/sendLoginUserRequest'; import useUser from '@/hooks/useUser'; type LoginT = z.infer; const LoginForm = () => { const router = useRouter(); const { register, handleSubmit, formState } = useForm({ resolver: zodResolver(LoginValidationSchema), defaultValues: { username: '', password: '', }, }); const { errors } = formState; const onSubmit: SubmitHandler = async (data) => { try { const response = await sendLoginUserRequest(data); router.push(`/users/${response.id}`); } catch (error) { console.error(error); } }; return (
username {errors.username?.message} password {errors.password?.message}
); }; const LoginPage: NextPage = () => { const { user } = useUser(); const router = useRouter(); useEffect(() => { if (!user) { return; } router.push(`/user/current`); }, [user]); return (

Login

); }; export default LoginPage;