import Container from '@material-ui/core/Container'; import _defaultTo from 'ramda/src/defaultTo'; import _isNil from 'ramda/src/isNil'; import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch, useSelector } from 'react-redux'; import { Link } from 'react-router-dom'; import ErrorMessage from '../../components/ErrorMessage'; import { LOGIN } from '../../constants/routes'; import { VerifyAccountOptions, verifyAccountRequested, } from '../../redux/auth/actionCreators'; import { State } from '../../redux/rootReducer'; import useStyles from './styles'; const VerifyAccount = () => { const classes = useStyles(); const { t } = useTranslation(); const { verifyAccountLoading, verifyAccountError } = useSelector( ({ auth }: State) => auth ); const dispatch = useDispatch(); const verifyAccount = (options: VerifyAccountOptions) => dispatch(verifyAccountRequested(options)); const params = // TODO: add polyfill location !== undefined ? new URLSearchParams(location.search) : null; const emailParam = params !== null ? params.get('email') : ''; const tokenParam = params !== null ? params.get('token') : ''; const email = _defaultTo('')(emailParam); const token = _defaultTo('')(tokenParam); useEffect(() => { if (!_isNil(email) && !_isNil(token)) { verifyAccount({ email, token }); } }, []); const displaySuccessMessage = Boolean( !verifyAccountLoading && !verifyAccountError ); const displayError = Boolean(!verifyAccountLoading && verifyAccountError); return (
{/** TODO: implement messages */} {verifyAccountLoading &&
{t('auth.verifyingAccount')}
} {displaySuccessMessage && (
{t('auth.accountHasBeenVerified')}{' '} {t('auth.loginAction')}
)} {displayError && {verifyAccountError}}
); }; // tslint:disable-next-line:max-file-line-count export default VerifyAccount;