Skip to content

Commit e26da89

Browse files
Merge pull request #5128 from topcoder-platform/issue-1532-gets0ul
fix: toggle checkpoint feedback
2 parents cf6e3ec + 9bbcc83 commit e26da89

File tree

4 files changed

+17
-20
lines changed

4 files changed

+17
-20
lines changed

src/shared/actions/page/challenge-details.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ function setSpecsTabState(state) {
5959
* @param {Boolean} open
6060
* @return {Object}
6161
*/
62-
function toggleCheckpointFeedback(id, open) {
62+
function toggleCheckpointFeedback(id, open = false) {
6363
return { id, open };
6464
}
6565

src/shared/components/challenge-detail/Checkpoints/index.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function Checkpoints(props) {
2727
document
2828
.getElementsByClassName(style['challenge-checkpoint-winners'])[index]
2929
.scrollIntoView(true);
30-
toggleCheckpointFeedback(index, true);
30+
toggleCheckpointFeedback(item.submissionId, true);
3131
}}
3232
type="button"
3333
>
@@ -47,12 +47,12 @@ function Checkpoints(props) {
4747
}}
4848
/>
4949
{
50-
checkpointResults && checkpointResults.map((item, index) => (
50+
checkpointResults && checkpointResults.map(item => (
5151
<div key={item.submissionId} styleName="challenge-checkpoint-winners">
5252
<button
5353
onClick={(e) => {
5454
e.preventDefault();
55-
toggleCheckpointFeedback(index);
55+
toggleCheckpointFeedback(item.submissionId, !item.expanded);
5656
}}
5757
styleName="challenge-checkpoint-submission"
5858
type="button"

src/shared/containers/challenge-detail/index.jsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,14 @@ function mapStateToProps(state, props) {
763763
mySubmissions = _.filter(challenge.submissions, s => (`${s.memberId}` === `${auth.user.userId}`));
764764
}
765765
}
766+
const { page: { challengeDetails: { feedbackOpen } } } = state;
767+
const checkpoints = state.challenge.checkpoints || {};
768+
if (feedbackOpen.id && checkpoints.checkpointResults) {
769+
checkpoints.checkpointResults = checkpoints.checkpointResults.map(result => ({
770+
...result,
771+
expanded: result.submissionId === feedbackOpen.id ? feedbackOpen.open : result.expanded,
772+
}));
773+
}
766774
return {
767775
auth: state.auth,
768776
challenge,
@@ -773,9 +781,9 @@ function mapStateToProps(state, props) {
773781
challengeId: String(props.match.params.challengeId),
774782
challengesUrl: props.challengesUrl,
775783
challengeTypesMap: state.challengeListing.challengeTypesMap,
776-
checkpointResults: (state.challenge.checkpoints || {}).checkpointResults,
784+
checkpointResults: checkpoints.checkpointResults,
777785
checkpointResultsUi: state.page.challengeDetails.checkpoints,
778-
checkpoints: state.challenge.checkpoints || {},
786+
checkpoints,
779787
communityId: props.communityId,
780788
communitiesList: state.tcCommunities.list,
781789
domain: state.domain,

src/shared/reducers/page/challenge-details.js

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,8 @@ import { updateQuery } from 'utils/url';
88
* @param {Object} state Previous state.
99
* @param {Object} action Action.
1010
*/
11-
function onToggleCheckpointFeedback(state, action) {
12-
const { payload: { id, open } } = action;
13-
const newCheckpointResults = _.clone(state.checkpoints.checkpointResults);
14-
newCheckpointResults[id].expanded = _.isUndefined(open)
15-
? !newCheckpointResults[id].expanded : open;
16-
const newCheckpoints = {
17-
...state.checkpoints,
18-
checkpointResults: newCheckpointResults,
19-
};
20-
return {
21-
...state,
22-
checkpoints: newCheckpoints,
23-
};
11+
function onToggleCheckpointFeedback(state, { payload }) {
12+
return { ...state, feedbackOpen: payload };
2413
}
2514

2615
/**
@@ -92,7 +81,7 @@ function create(state = {}) {
9281
[a.submissions.toggleSubmissionTestcase]: toggleSubmissionTestcase,
9382
[a.submissions.clearSubmissionTestcaseOpen]: clearSubmissionTestcaseOpen,
9483
}, _.defaults(state, {
95-
checkpoints: {},
84+
feedbackOpen: {},
9685
specsTabState: SPECS_TAB_STATES.VIEW,
9786
submissionHistoryOpen: {},
9887
submissionTestcaseOpen: {},

0 commit comments

Comments
 (0)