import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import { browserHistory } from 'react-router'; import { withTranslation } from 'react-i18next'; import get from 'lodash/get'; import { Helmet } from 'react-helmet'; import { verifyEmailConfirmation } from '../actions'; import Nav from '../../../components/Nav'; class EmailVerificationView extends React.Component { static defaultProps = { emailVerificationTokenState: null, } componentWillMount() { const verificationToken = this.verificationToken(); if (verificationToken != null) { this.props.verifyEmailConfirmation(verificationToken); } } verificationToken = () => get(this.props, 'location.query.t', null); render() { let status = null; const { emailVerificationTokenState, } = this.props; if (this.verificationToken() == null) { status = (

{this.props.t('EmailVerificationView.InvalidTokenNull')}

); } else if (emailVerificationTokenState === 'checking') { status = (

{this.props.t('EmailVerificationView.Checking')}

); } else if (emailVerificationTokenState === 'verified') { status = (

{this.props.t('EmailVerificationView.Verified')}

); setTimeout(() => browserHistory.push('/'), 1000); } else if (emailVerificationTokenState === 'invalid') { status = (

{this.props.t('EmailVerificationView.InvalidState')}

); } return (
); } } function mapStateToProps(state) { return { emailVerificationTokenState: state.user.emailVerificationTokenState, }; } function mapDispatchToProps(dispatch) { return bindActionCreators({ verifyEmailConfirmation, }, dispatch); } EmailVerificationView.propTypes = { emailVerificationTokenState: PropTypes.oneOf([ 'checking', 'verified', 'invalid' ]), verifyEmailConfirmation: PropTypes.func.isRequired, t: PropTypes.func.isRequired }; export default withTranslation()(connect(mapStateToProps, mapDispatchToProps)(EmailVerificationView));