import React from 'react'; import PropTypes from 'prop-types'; import { navigate } from 'gatsby'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; import { Grid, Row, Col, Button } from '@freecodecamp/react-bootstrap'; import { Loader, Spacer } from '../components/helpers'; import Layout from '../components/Layout'; import { userSelector, userFetchStateSelector } from '../redux'; import { randomQuote } from '../utils/get-words'; import './welcome.css'; const propTypes = { fetchState: PropTypes.shape({ pending: PropTypes.bool, complete: PropTypes.bool, errored: PropTypes.bool }), user: PropTypes.shape({ acceptedPrivacyTerms: PropTypes.bool, username: PropTypes.string, completedChallengeCount: PropTypes.number, completedProjectCount: PropTypes.number, completedCertCount: PropTypes.number, completedLegacyCertCount: PropTypes.number }) }; const mapStateToProps = createSelector( userFetchStateSelector, userSelector, (fetchState, user) => ({ fetchState, user }) ); const mapDispatchToProps = dispatch => bindActionCreators({}, dispatch); function Welcome({ fetchState: { pending, complete }, fetchState, user: { acceptedPrivacyTerms, name = '', completedChallengeCount = 0, completedProjectCount = 0, completedCertCount = 0, completedLegacyCertCount = 0 } }) { console.log(fetchState); if (pending && !complete) { return (
); } if (!acceptedPrivacyTerms) { navigate('/accept-privacy-terms'); return null; } const { quote, author } = randomQuote(); return (

Welcome {name ? name : 'Camper'}!

We're building a massive open dataset about new coders. Take the 2018 New Coder Survey. It only takes 5 minutes.
{quote}
{author}

You have completed {completedChallengeCount} of{' '} 1408 coding challenges.

You have built {completedProjectCount} of{' '} 30 projects.

{completedLegacyCertCount ? (

You have earned {completedLegacyCertCount} of{' '} 4 legacy certifications.

) : null}

You have earned {completedCertCount} of{' '} 6 certifications.

); } Welcome.displayName = 'Welcome'; Welcome.propTypes = propTypes; export default connect( mapStateToProps, mapDispatchToProps )(Welcome);