feat: handle completion when logged out

This commit is contained in:
Oliver Eyton-Williams
2019-10-09 11:42:47 +02:00
committed by mrugesh
parent feb96c3e3b
commit bc1b6ca7a2
2 changed files with 21 additions and 4 deletions

View File

@ -35,11 +35,11 @@ function Login(props) {
const { children, navigate, isSignedIn, ...restProps } = props; const { children, navigate, isSignedIn, ...restProps } = props;
return ( return (
<Button <Button
bsStyle='default'
className={(restProps.block ? 'btn-cta-big' : '') + ' signup-btn btn-cta'}
href='/signin' href='/signin'
onClick={createOnClick(navigate, isSignedIn)} onClick={createOnClick(navigate, isSignedIn)}
{...restProps} {...restProps}
bsStyle='default'
className={(restProps.block ? 'btn-cta-big' : '') + ' signup-btn btn-cta'}
> >
{children || 'Sign In'} {children || 'Sign In'}
</Button> </Button>

View File

@ -6,6 +6,7 @@ import { createSelector } from 'reselect';
import { Button, Modal } from '@freecodecamp/react-bootstrap'; import { Button, Modal } from '@freecodecamp/react-bootstrap';
import ga from '../../../analytics'; import ga from '../../../analytics';
import Login from '../../../components/Header/components/Login';
import GreenPass from '../../../assets/icons/GreenPass'; import GreenPass from '../../../assets/icons/GreenPass';
import { dasherize } from '../../../../../utils/slugs'; import { dasherize } from '../../../../../utils/slugs';
@ -21,15 +22,19 @@ import {
challengeMetaSelector challengeMetaSelector
} from '../redux'; } from '../redux';
import { isSignedInSelector } from '../../../redux';
const mapStateToProps = createSelector( const mapStateToProps = createSelector(
challengeFilesSelector, challengeFilesSelector,
challengeMetaSelector, challengeMetaSelector,
isCompletionModalOpenSelector, isCompletionModalOpenSelector,
isSignedInSelector,
successMessageSelector, successMessageSelector,
(files, { title }, isOpen, message) => ({ (files, { title }, isOpen, isSignedIn, message) => ({
files, files,
title, title,
isOpen, isOpen,
isSignedIn,
message message
}) })
); );
@ -58,6 +63,7 @@ const propTypes = {
files: PropTypes.object.isRequired, files: PropTypes.object.isRequired,
handleKeypress: PropTypes.func.isRequired, handleKeypress: PropTypes.func.isRequired,
isOpen: PropTypes.bool, isOpen: PropTypes.bool,
isSignedIn: PropTypes.bool.isRequired,
message: PropTypes.string, message: PropTypes.string,
submitChallenge: PropTypes.func.isRequired, submitChallenge: PropTypes.func.isRequired,
title: PropTypes.string title: PropTypes.string
@ -107,6 +113,7 @@ export class CompletionModal extends Component {
const { const {
close, close,
isOpen, isOpen,
isSignedIn,
submitChallenge, submitChallenge,
handleKeypress, handleKeypress,
message, message,
@ -144,9 +151,19 @@ export class CompletionModal extends Component {
bsStyle='primary' bsStyle='primary'
onClick={submitChallenge} onClick={submitChallenge}
> >
Submit and go to next challenge{' '} {isSignedIn ? 'Submit and g' : 'G'}o to next challenge{' '}
<span className='hidden-xs'>(Ctrl + Enter)</span> <span className='hidden-xs'>(Ctrl + Enter)</span>
</Button> </Button>
{isSignedIn ? null : (
<Login
block={true}
bsSize='lg'
bsStyle='primary'
className='btn-invert'
>
Sign in to save your progress
</Login>
)}
{this.state.downloadURL ? ( {this.state.downloadURL ? (
<Button <Button
block={true} block={true}