import useAccount from '@/utils/hooks/useAccount' import { Alert, Button, FormContainer, FormItem, Input } from '@/components/ui' import { Field, Form, Formik } from 'formik' import * as Yup from 'yup' import { TenantSelector } from '@/components/shared' import { ROUTES_ENUM } from '@/routes/route.constant' import { store, useStoreActions } from '@/store' import Captcha from '@/components/shared/Captcha' import { useLocalization } from '@/utils/hooks/useLocalization' import PageTitle from '@/components/shared/PageTitle' import { TurnstileInstance } from '@marsidev/react-turnstile' import { useEffect, useRef, useState } from 'react' import ActionLink from '@/components/shared/ActionLink' type FormSchema = { email: string captchaResponse: string } const validationSchema = Yup.object().shape({ email: Yup.string().required(), captchaResponse: Yup.string().required(), }) const SendConfirmationCode = () => { const { userName } = store.getState().auth.user const { translate } = useLocalization() const { message, error, sendConfirmationCode } = useAccount() const { setWarning } = useStoreActions((actions) => actions.base.messages) const captchaRef = useRef(null) const [captchaKey, setCaptchaKey] = useState(0) useEffect(() => { setWarning('') }, [setWarning]) const onSubmit = async ( values: FormSchema, setSubmitting: (isSubmitting: boolean) => void, setFieldValue: (field: string, value: string) => void, ) => { setSubmitting(true) try { const result = await sendConfirmationCode(values) if (result?.status !== 'failed') { setWarning('') } } finally { setFieldValue('captchaResponse', '') captchaRef.current?.reset() setCaptchaKey((key) => key + 1) setSubmitting(false) } } return ( <> {!message && (

{translate('::Abp.Account.SendConfirmationCode')}

{translate('::Abp.Account.SendConfirmationCode.Message')}

)}
{message && ( {message} )} {error && ( {error} )} {message ? (
{translate('::Abp.Account.Backto')} {translate('::Abp.Account.SignIn')}
) : ( <> { onSubmit(values, setSubmitting, setFieldValue) }} > {({ touched, errors, isSubmitting, setFieldValue }) => (
setFieldValue('captchaResponse', '')} onExpire={() => setFieldValue('captchaResponse', '')} onSuccess={(token: string) => setFieldValue('captchaResponse', token)} />
{translate('::Abp.Account.Backto')} {translate('::Abp.Account.SignIn')}
)}
)}
) } export default SendConfirmationCode