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'; function ResetPasswordRequest() { const { userStore } = useStore(); const loading = userStore.loading; const requestResetPassword = userStore.requestResetPassword; 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.CAPTCHA_SITE_KEY; 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 && (
Alright! a reset link was emailed to {email}. Click on it to reset your account password.
)} {error && (
{smtpError ? ( Email delivery failed due to invalid SMTP configuration. Please contact your admin. Learn More ) : {error}}
)}
); } export default observer(ResetPasswordRequest);