fix(client): make render functions pure
This commit is contained in:
@ -12,11 +12,11 @@ import {
|
|||||||
Checkbox
|
Checkbox
|
||||||
} from '@freecodecamp/react-bootstrap';
|
} from '@freecodecamp/react-bootstrap';
|
||||||
import Helmet from 'react-helmet';
|
import Helmet from 'react-helmet';
|
||||||
|
import { createSelector } from 'reselect';
|
||||||
|
|
||||||
import { ButtonSpacer, Spacer } from '../components/helpers';
|
import { ButtonSpacer, Spacer } from '../components/helpers';
|
||||||
import { acceptTerms, userSelector } from '../redux';
|
import { acceptTerms, userSelector } from '../redux';
|
||||||
import { createSelector } from 'reselect';
|
import createRedirect from '../components/createRedirect';
|
||||||
import { navigate } from 'gatsby';
|
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
acceptTerms: PropTypes.func.isRequired,
|
acceptTerms: PropTypes.func.isRequired,
|
||||||
@ -32,6 +32,7 @@ const mapStateToProps = createSelector(
|
|||||||
);
|
);
|
||||||
const mapDispatchToProps = dispatch =>
|
const mapDispatchToProps = dispatch =>
|
||||||
bindActionCreators({ acceptTerms }, dispatch);
|
bindActionCreators({ acceptTerms }, dispatch);
|
||||||
|
const RedirectWelcome = createRedirect('/welcome');
|
||||||
|
|
||||||
class AcceptPrivacyTerms extends Component {
|
class AcceptPrivacyTerms extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -65,8 +66,7 @@ class AcceptPrivacyTerms extends Component {
|
|||||||
render() {
|
render() {
|
||||||
const { acceptedPrivacyTerms } = this.props;
|
const { acceptedPrivacyTerms } = this.props;
|
||||||
if (acceptedPrivacyTerms) {
|
if (acceptedPrivacyTerms) {
|
||||||
navigate('/welcome');
|
return <RedirectWelcome />;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
const { privacyPolicy, termsOfService, quincyEmail } = this.state;
|
const { privacyPolicy, termsOfService, quincyEmail } = this.state;
|
||||||
return (
|
return (
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import React, { Fragment } from 'react';
|
import React, { Fragment } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { navigate } from 'gatsby';
|
|
||||||
import { bindActionCreators } from 'redux';
|
import { bindActionCreators } from 'redux';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
@ -17,6 +16,8 @@ import {
|
|||||||
activeDonationsSelector
|
activeDonationsSelector
|
||||||
} from '../redux';
|
} from '../redux';
|
||||||
import { randomQuote } from '../utils/get-words';
|
import { randomQuote } from '../utils/get-words';
|
||||||
|
import createRedirect from '../components/createRedirect';
|
||||||
|
import RedirectHome from '../components/RedirectHome';
|
||||||
|
|
||||||
import './welcome.css';
|
import './welcome.css';
|
||||||
|
|
||||||
@ -52,6 +53,7 @@ const mapStateToProps = createSelector(
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
const mapDispatchToProps = dispatch => bindActionCreators({}, dispatch);
|
const mapDispatchToProps = dispatch => bindActionCreators({}, dispatch);
|
||||||
|
const RedirectAcceptPrivacyTerm = createRedirect('/accept-privacy-terms');
|
||||||
|
|
||||||
function Welcome({
|
function Welcome({
|
||||||
fetchState: { pending, complete },
|
fetchState: { pending, complete },
|
||||||
@ -76,13 +78,11 @@ function Welcome({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isSignedIn) {
|
if (!isSignedIn) {
|
||||||
navigate('/');
|
return <RedirectHome />;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSignedIn && !acceptedPrivacyTerms) {
|
if (isSignedIn && !acceptedPrivacyTerms) {
|
||||||
navigate('/accept-privacy-terms');
|
return <RedirectAcceptPrivacyTerm />;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const { quote, author } = randomQuote();
|
const { quote, author } = randomQuote();
|
||||||
|
Reference in New Issue
Block a user