From 271d25a2abc5ecd89c73f3985e51e0fe72d9b8aa Mon Sep 17 00:00:00 2001 From: Stuart Taylor Date: Tue, 3 Sep 2019 08:38:19 +0100 Subject: [PATCH] fix: Render completed checkmark in ChallengeTitle (#36746) * fix: Render completed checkmark in ChallengeTitle when user has passed the challenge * fix: Update ChallengeTitle snapshot --- .../Challenges/components/Challenge-Title.js | 14 ++--- .../Challenges/components/Side-Panel.js | 9 ++- .../__snapshots__/ChallengeTitle.test.js.snap | 62 +++++++++++++++++-- .../src/templates/Challenges/redux/index.js | 6 ++ 4 files changed, 77 insertions(+), 14 deletions(-) diff --git a/client/src/templates/Challenges/components/Challenge-Title.js b/client/src/templates/Challenges/components/Challenge-Title.js index e036ee02934..3a8d91b46ec 100644 --- a/client/src/templates/Challenges/components/Challenge-Title.js +++ b/client/src/templates/Challenges/components/Challenge-Title.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import Link from '../../../components/helpers/Link'; import './challenge-title.css'; +import GreenPass from '../../../assets/icons/GreenPass'; const propTypes = { children: PropTypes.string, @@ -21,13 +22,6 @@ function ChallengeTitle({ prevChallengePath, showPrevNextBtns }) { - let icon = null; - if (isCompleted) { - icon = ( - // TODO Use SVG here - - ); - } return (
{showPrevNextBtns ? ( @@ -41,7 +35,11 @@ function ChallengeTitle({ ) : null}

{children || 'Happy Coding!'} - {icon} + {isCompleted ? ( + + ) : null}

{showPrevNextBtns ? ( ({ + (isChallengeCompleted, tests) => ({ + isChallengeCompleted, tests }) ); @@ -25,6 +27,7 @@ const propTypes = { guideUrl: PropTypes.string, instructions: PropTypes.string, introPath: PropTypes.string, + isChallengeCompleted: PropTypes.bool, nextChallengePath: PropTypes.string, prevChallengePath: PropTypes.string, section: PropTypes.string, @@ -59,6 +62,7 @@ export class SidePanel extends Component { description, instructions, introPath, + isChallengeCompleted, guideUrl, nextChallengePath, prevChallengePath, @@ -73,6 +77,7 @@ export class SidePanel extends Component {
renders correctly 1`] = ` className="text-center challenge-title" > title text - + + Passed + + + + + Passed + + + + + + state[ns].challengeFiles; export const challengeMetaSelector = state => state[ns].challengeMeta; export const challengeTestsSelector = state => state[ns].challengeTests; export const consoleOutputSelector = state => state[ns].consoleOut; +export const isChallengeCompletedSelector = state => { + const completedChallenges = completedChallengesSelector(state); + const { id: currentChallengeId } = challengeMetaSelector(state); + return completedChallenges.some(({ id }) => id === currentChallengeId); +}; export const isCodeLockedSelector = state => state[ns].isCodeLocked; export const isCompletionModalOpenSelector = state => state[ns].modal.completion;