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