Skip to content

Commit e300390

Browse files
committed
migrated to newer redux syntax
1 parent c07b2c3 commit e300390

File tree

1 file changed

+19
-57
lines changed

1 file changed

+19
-57
lines changed
Lines changed: 19 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,31 @@
1-
import PropTypes from 'prop-types';
2-
import React, { useState, useEffect } from 'react';
3-
import { connect } from 'react-redux';
4-
import { bindActionCreators } from 'redux';
5-
import { withTranslation } from 'react-i18next';
1+
import React, { useEffect, useMemo } from 'react';
62
import { Helmet } from 'react-helmet';
7-
import browserHistory from '../../../browserHistory';
3+
import { useLocation, useHistory } from 'react-router-dom';
4+
import { useSelector, useDispatch } from 'react-redux';
5+
import { useTranslation } from 'react-i18next';
86
import { verifyEmailConfirmation } from '../actions';
97
import RootPage from '../../../components/RootPage';
108
import Nav from '../../IDE/components/Header/Nav';
119

12-
const EmailVerificationView = (props) => {
13-
const [verificationAttempted, setVerificationAttempted] = useState(false);
14-
const { emailVerificationTokenState, location, t } = props;
15-
16-
const verificationTokenFromLocation = () => {
10+
const EmailVerificationView = () => {
11+
const { t } = useTranslation();
12+
const location = useLocation();
13+
const dispatch = useDispatch();
14+
const browserHistory = useHistory();
15+
const emailVerificationTokenState = useSelector(
16+
(state) => state.user.emailVerificationTokenState
17+
);
18+
const verificationToken = useMemo(() => {
1719
const searchParams = new URLSearchParams(location.search);
1820
return searchParams.get('t');
19-
};
20-
21+
}, [location.search]);
2122
useEffect(() => {
22-
const verificationToken = verificationTokenFromLocation();
23-
if (verificationToken != null && !verificationAttempted) {
24-
props.verifyEmailConfirmation(verificationToken);
25-
setVerificationAttempted(true);
23+
if (verificationToken) {
24+
dispatch(verifyEmailConfirmation(verificationToken));
2625
}
27-
}, [location, props]);
28-
26+
}, [dispatch, verificationToken]);
2927
let status = null;
30-
31-
if (verificationTokenFromLocation() == null) {
28+
if (verificationToken == null) {
3229
status = <p>{t('EmailVerificationView.InvalidTokenNull')}</p>;
3330
} else if (emailVerificationTokenState === 'checking') {
3431
status = <p>{t('EmailVerificationView.Checking')}</p>;
@@ -56,39 +53,4 @@ const EmailVerificationView = (props) => {
5653
</RootPage>
5754
);
5855
};
59-
60-
function mapStateToProps(state) {
61-
return {
62-
emailVerificationTokenState: state.user.emailVerificationTokenState
63-
};
64-
}
65-
66-
function mapDispatchToProps(dispatch) {
67-
return bindActionCreators(
68-
{
69-
verifyEmailConfirmation
70-
},
71-
dispatch
72-
);
73-
}
74-
75-
EmailVerificationView.defaultProps = {
76-
emailVerificationTokenState: null
77-
};
78-
79-
EmailVerificationView.propTypes = {
80-
emailVerificationTokenState: PropTypes.oneOf([
81-
'checking',
82-
'verified',
83-
'invalid'
84-
]),
85-
verifyEmailConfirmation: PropTypes.func.isRequired,
86-
t: PropTypes.func.isRequired,
87-
location: PropTypes.shape({
88-
search: PropTypes.string.isRequired
89-
}).isRequired
90-
};
91-
92-
export default withTranslation()(
93-
connect(mapStateToProps, mapDispatchToProps)(EmailVerificationView)
94-
);
56+
export default EmailVerificationView;

0 commit comments

Comments
 (0)