import React from 'react'; import { Loader, Icon } from 'UI'; import ReCAPTCHA from 'react-google-recaptcha'; import { observer } from 'mobx-react-lite'; import { useStore } from 'App/mstore'; import { Form, Input, Button, Typography } from 'antd'; import { SquareArrowOutUpRight } from 'lucide-react'; import { useTranslation } from 'react-i18next'; function ResetPasswordRequest() { const { t } = useTranslation(); const { userStore } = useStore(); const { loading } = userStore; const { requestResetPassword } = userStore; const recaptchaRef = React.createRef(); const [requested, setRequested] = React.useState(false); const [email, setEmail] = React.useState(''); const [error, setError] = React.useState(null); const CAPTCHA_ENABLED = window.env.CAPTCHA_ENABLED === 'true'; const { CAPTCHA_SITE_KEY } = window.env; const [smtpError, setSmtpError] = React.useState(false); const write = (e: any) => { const { name, value } = e.target; if (name === 'email') setEmail(value); }; const onSubmit = () => { // e.preventDefault(); if (CAPTCHA_ENABLED && recaptchaRef.current) { recaptchaRef.current.execute(); } else if (!CAPTCHA_ENABLED) { handleSubmit(); } }; const handleSubmit = (token?: any) => { if ( CAPTCHA_ENABLED && recaptchaRef.current && (token === null || token === undefined) ) return; setError(null); requestResetPassword({ email: email.trim(), 'g-recaptcha-response': token }) .catch((err: any) => { if (err.message?.toLowerCase().includes('smtp')) { setSmtpError(true); } setError(err.message); }) .finally(() => { setRequested(true); }); }; return (
{CAPTCHA_ENABLED && (
handleSubmit(token)} />
)} {!requested && ( <> } required /> )} {requested && !error && (
{t('Alright! a reset link was emailed to')}{' '} {email}.{' '} {t('Click on it to reset')} {t('your account password.')}
)} {error && (
{smtpError ? ( {t('Email delivery failed due to invalid SMTP configuration. Please contact your admin.')} {t('Learn More')} ) : ( {error} )}
)}
); } export default observer(ResetPasswordRequest);