import React, {useState, useMemo} from 'react';
import {useTranslation} from 'react-i18next';
import {useAuth} from 'strapi-react-context';
import TextField from '@material-ui/core/TextField';
import Button from '@material-ui/core/Button';
import CardContent from '@material-ui/core/CardContent';
import CardActions from '@material-ui/core/CardActions';
import Typography from '@material-ui/core/Typography';
import {useToast} from '../../contexts/Toast';
import {Redirect} from 'react-router-dom';
import CircularProgress from '@material-ui/core/CircularProgress';
import {makeStyles} from '@material-ui/core/styles';
import {useHistory} from 'react-router-dom';
const SignUp = () => {
const {t} = useTranslation();
const classes = useStyles();
const history = useHistory();
const {
location: {state: historyState = {}},
} = history;
const {signUp, token} = useAuth();
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState('');
const [firstName, setFirstName] = useState('');
const [lastName, setLastName] = useState('');
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const canSubmit = useMemo(
() =>
[firstName, lastName, email, password].filter(s => s.length < 2)
.length === 0,
[firstName, lastName, email, password]
);
const {addToast} = useToast();
const onSubmit = async evt => {
if (evt.preventDefault) evt.preventDefault();
if (isLoading) return;
setIsLoading(true);
try {
await signUp(email.replace(/\.@/, '_'), email, password, {
firstName,
lastName,
events: historyState.event ? [historyState.event] : [],
});
} catch (error) {
if (error.kind && error.kind === 'bad_data') {
setError(t('signup.errors.email_taken'));
} else if (error.kind) {
addToast(t(`generic.errors.${error.kind}`));
} else {
addToast(t(`generic.errors.unknown`));
}
}
setIsLoading(false);
return false;
};
if (!!token && !isLoading) {
return