import React from 'react'; import { Form, Input, Loader, Button, Icon } from 'UI'; import ReCAPTCHA from 'react-google-recaptcha'; import { observer } from 'mobx-react-lite'; import { useStore } from 'App/mstore'; 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 write = (e: any) => { const { name, value } = e.target; if (name === 'email') setEmail(value); }; const onSubmit = (e: any) => { 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 }) .then((response: any) => { setRequested(true); if (response && response.errors && response.errors.length > 0) { setError(response.errors[0]); } }); }; return (
{CAPTCHA_ENABLED && (
handleSubmit(token)} />
)} {!requested && ( <> )} {requested && !error && (
Alright! a reset link was emailed to {email}. Click on it to reset your account password.
)} {error && (
{error}
)}
); } export default observer(ResetPasswordRequest);