fix(client): make render functions pure

This commit is contained in:
Valeriy S
2019-02-14 15:27:05 +03:00
committed by Stuart Taylor
parent 361ce5cd8e
commit 5e137d2022
2 changed files with 9 additions and 9 deletions

View File

@ -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 (

View File

@ -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();