From 70b7080833c8a08ae47642d09ecb5fb80426c971 Mon Sep 17 00:00:00 2001 From: Tom <20648924+moT01@users.noreply.github.com> Date: Thu, 29 Aug 2019 12:55:06 -0500 Subject: [PATCH] fix: make challenge links on profile page work (#36701) * fix: make challenge links on profile page work * fix: filter out certs from displaying * fix: add suggested changes --- api-server/common/models/challenge.js | 8 +++++-- .../components/profile/components/TimeLine.js | 24 +++++++++++-------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/api-server/common/models/challenge.js b/api-server/common/models/challenge.js index 526e291130..34aef6ef14 100644 --- a/api-server/common/models/challenge.js +++ b/api-server/common/models/challenge.js @@ -1,5 +1,6 @@ import { Observable } from 'rx'; import { isEmpty } from 'lodash'; +import { dasherize } from '../utils'; export default function(Challenge) { let challengeIdToNameMap; @@ -20,8 +21,11 @@ export default function(Challenge) { throw Error(err); } challengeIdToNameMap = challenges.reduce((map, challenge) => { - const { id, title } = challenge; - map[id] = title; + const { id, block, dashedName, title, superBlock } = challenge; + map[id] = { + challengeTitle: title, + challengePath: `${superBlock}/${dasherize(block)}/${dashedName}` + }; return map; }, {}); }); diff --git a/client/src/components/profile/components/TimeLine.js b/client/src/components/profile/components/TimeLine.js index b1dd788ec5..d017598394 100644 --- a/client/src/components/profile/components/TimeLine.js +++ b/client/src/components/profile/components/TimeLine.js @@ -12,7 +12,6 @@ import { challengeIdToNameMapSelector, fetchIdToNameMap } from '../../../templates/Challenges/redux'; -import { blockNameify } from '../../../../utils/blockNameify'; import { FullWidthRow } from '../../helpers'; import SolutionViewer from '../../settings/SolutionViewer'; @@ -42,7 +41,12 @@ const propTypes = { }) ), fetchIdToNameMap: PropTypes.func.isRequired, - idToNameMap: PropTypes.objectOf(PropTypes.string), + idToNameMap: PropTypes.objectOf( + PropTypes.shape({ + challengePath: PropTypes.string, + challengeTitle: PropTypes.string + }) + ), username: PropTypes.string }; @@ -70,13 +74,11 @@ class Timeline extends Component { renderCompletion(completed) { const { idToNameMap } = this.props; const { id, completedDate } = completed; - const challengeDashedName = idToNameMap[id]; + const { challengeTitle, challengePath } = idToNameMap[id]; return ( - - {blockNameify(challengeDashedName)} - + {challengeTitle}