import {useCallback, useState, useEffect} from 'react'; import {useTranslation} from 'react-i18next'; import router from 'next/router'; import TextField from '@material-ui/core/TextField'; import Button from '@material-ui/core/Button'; import CardContent from '@material-ui/core/CardContent'; import Card from '@material-ui/core/Card'; import CircularProgress from '@material-ui/core/CircularProgress'; import CardActions from '@material-ui/core/CardActions'; import Link from '@material-ui/core/Link'; import {makeStyles} from '@material-ui/core/styles'; import LostPasswordSuccess from './Success'; import useToastStore from '../../stores/useToastStore'; import useProfile from '../../hooks/useProfile'; import {useForgotPasswordMutation} from '../../generated/graphql'; const LostPassword = () => { const {t} = useTranslation(); const classes = useStyles(); const addToast = useToastStore(s => s.addToast); const {user} = useProfile(); const [sendForgotPassword, {loading}] = useForgotPasswordMutation(); const [isSent, setIsSent] = useState(false); const [error, setError] = useState(''); const [email, setEmail] = useState(''); const canSubmit = email.length > 4; useEffect(() => { if (user?.confirmed) router.replace('/confirm'); else if (user) router.replace('/dashboard'); }, [user]); const onSubmit = useCallback( async e => { if (e.preventDefault) e.preventDefault(); try { await sendForgotPassword({variables: {email}}); setIsSent(true); } catch (error) { if (error.message === 'Bad Request') { addToast(t('lost_password.error')); setError(t('lost_password.error')); } else { addToast(t('generic.errors.unknown')); } } return false; }, [sendForgotPassword, email, addToast, t] ); if (!loading && isSent) return ; return (
setEmail(value)} id="LostPasswordEmail" name="email" type="email" error={!!error} helperText={ error && ( <> {error}  {t('lost_password.actions.register')} ) } />
); }; const useStyles = makeStyles(theme => ({ loader: { marginLeft: theme.spacing(4), }, actions: { marginTop: theme.spacing(2), justifyContent: 'flex-end', }, })); export default LostPassword;