import Card from 'react-bootstrap/Card'; import Form from 'react-bootstrap/Form'; import FormControl from 'react-bootstrap/FormControl'; import constants from 'utils/strings/constants'; import { Formik, FormikHelpers } from 'formik'; import React, { useEffect, useRef, useState } from 'react'; import { useRouter } from 'next/router'; import * as Yup from 'yup'; import { getOtt } from 'services/userService'; import { setData, LS_KEYS, getData } from 'utils/storage/localStorage'; import SubmitButton from 'components/SubmitButton'; import Button from 'react-bootstrap/Button'; import LogoImg from './LogoImg'; interface formValues { email: string; } interface LoginProps { signUp: () => void } export default function Login(props: LoginProps) { const router = useRouter(); const [waiting, setWaiting] = useState(false); const [loading, setLoading] = useState(true); useEffect(() => { const main = async () => { router.prefetch('/verify'); const user = getData(LS_KEYS.USER); if (user?.email) { await router.push('/verify'); } setLoading(false); }; main(); }, []); const loginUser = async ( { email }: formValues, { setFieldError }: FormikHelpers, ) => { try { setWaiting(true); await getOtt(email); setData(LS_KEYS.USER, { email }); router.push('/verify'); } catch (e) { setFieldError('email', `${constants.UNKNOWN_ERROR} ${e.message}`); } setWaiting(false); }; const inputElement = useRef(null); useEffect(() => { setTimeout(() => { inputElement.current?.focus(); }, 250); }, []); return ( <> {constants.LOGIN} initialValues={{ email: '' }} validationSchema={Yup.object().shape({ email: Yup.string() .email(constants.EMAIL_ERROR) .required(constants.REQUIRED), })} validateOnChange={false} validateOnBlur={false} onSubmit={loginUser} > {({ values, errors, touched, handleChange, handleSubmit, }) => (
{errors.email}
)} ); }