'use client' import Button from '@/components/button/PrimaryButton' import InputField from '@/components/input/InputField' import { AUTH_PAGE_ELEMENT, AUTH_STEP } from '@/enums' import { LoginOTPRequestType } from '@/app/auth/login/types/Types' import Image from 'next/image' import React, { useState } from 'react' import type { ChangeEvent } from 'react' import { useTranslation } from 'react-i18next' import { useFormik } from 'formik' import * as Yup from 'yup' import { useOtpRequest } from '@/app/auth/login/hooks/useAuthData' import { useParams } from 'next/navigation' import { toast } from '@/components/Toast' import StepOtp from './StepOtp' import { extractErrorMessage } from '@/lib/func' type StepEnterNumberProps = { pending?: boolean onChange?: (event: ChangeEvent) => void value?: string } function StepEnterNumber(_props: StepEnterNumberProps = {}) { void _props const { t } = useTranslation('auth') const { name } = useParams() const [step, setStep] = useState(AUTH_STEP.ENTER_NUMBER) const { mutate: mutateOtpRequest, isPending } = useOtpRequest() const formik = useFormik({ initialValues: { phone: '', slug: '', }, validationSchema: Yup.object({ phone: Yup.string().required('Errors.PhoneNumberRequired').matches(/^09\d{9}$/, 'Errors.PhoneNumberFormat'), }), onSubmit: (values) => { if (name) { values.slug = name as string mutateOtpRequest(values, { onSuccess: () => { toast(t('otp_sent'), 'success') setStep(AUTH_STEP.ENTER_OTP) }, onError: (error) => { toast(extractErrorMessage(error), 'error') } }) } } }) return ( <> login banner
{ step === AUTH_STEP.ENTER_NUMBER && ( <>
{t('Enter.Heading')}

{t('Enter.Description')}

) } { step === AUTH_STEP.ENTER_OTP && ( <>
{t('OTP.Heading')}

{t('OTP.Description', { phoneNumber: formik.values.phone })}

) }
{step === AUTH_STEP.ENTER_NUMBER && ( )} {step === AUTH_STEP.ENTER_OTP && ( )}
{ step === AUTH_STEP.ENTER_NUMBER && ( ) }
) } export default StepEnterNumber