From 134fcade05e3a4c5283d6d1085e5987532a9df99 Mon Sep 17 00:00:00 2001 From: "Luiz R. Rodrigues" Date: Wed, 1 Jul 2020 17:46:24 -0300 Subject: [PATCH 1/4] Updated check if is Marathon Match challenge --- .../challenge-detail/Header/TabSelector/index.jsx | 5 +++-- .../components/challenge-detail/Header/index.jsx | 1 + .../challenge-detail/MySubmissions/index.jsx | 11 +++++++++-- src/shared/containers/challenge-detail/index.jsx | 8 +++++--- src/shared/utils/challenge.js | 4 ++-- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/shared/components/challenge-detail/Header/TabSelector/index.jsx b/src/shared/components/challenge-detail/Header/TabSelector/index.jsx index e964619d9d..768ad25042 100644 --- a/src/shared/components/challenge-detail/Header/TabSelector/index.jsx +++ b/src/shared/components/challenge-detail/Header/TabSelector/index.jsx @@ -21,6 +21,7 @@ export default function ChallengeViewSelector(props) { const { isLoggedIn, challenge, + isMM, checkpointCount, numOfRegistrants, numOfSubmissions, @@ -32,8 +33,6 @@ export default function ChallengeViewSelector(props) { mySubmissions, } = props; - const challengeSubTrack = challenge.subTrack; - const isMM = challengeSubTrack && challengeSubTrack.indexOf('MARATHON_MATCH') > -1; const forumId = _.get(challenge, 'forumId') || 0; const roles = _.get(challenge, 'userDetails.roles') || []; @@ -189,6 +188,7 @@ export default function ChallengeViewSelector(props) { ChallengeViewSelector.defaultProps = { isLoggedIn: false, challenge: {}, + isMM: false, checkpointCount: 0, numOfRegistrants: 0, numOfSubmissions: 0, @@ -206,6 +206,7 @@ ChallengeViewSelector.propTypes = { roles: PT.arrayOf(PT.string), }), }), + isMM: PT.bool, checkpointCount: PT.number, numOfRegistrants: PT.number, numOfSubmissions: PT.number, diff --git a/src/shared/components/challenge-detail/Header/index.jsx b/src/shared/components/challenge-detail/Header/index.jsx index d51470d6ec..c746aef2cf 100644 --- a/src/shared/components/challenge-detail/Header/index.jsx +++ b/src/shared/components/challenge-detail/Header/index.jsx @@ -450,6 +450,7 @@ export default function ChallengeHeader(props) { -1; + const { + challenge, + isMM, + loadMMSubmissions, + auth, + } = this.props; // Check auth token, go to login page if invalid if (isMM && (_.isEmpty(auth) || _.isEmpty(auth.tokenV3) || isTokenExpired(auth.tokenV3))) { @@ -45,6 +49,7 @@ class MySubmissionsView extends React.Component { const { challengesUrl, challenge, + isMM, hasRegistered, unregistering, submissionEnded, @@ -81,6 +86,7 @@ class MySubmissionsView extends React.Component { hasRegistered={hasRegistered} unregistering={unregistering} submissionEnded={submissionEnded} + isMM={isMM} isLegacyMM={isLegacyMM} mySubmissions={mySubmissions} auth={auth} @@ -112,6 +118,7 @@ MySubmissionsView.propTypes = { hasRegistered: PT.bool.isRequired, unregistering: PT.bool.isRequired, submissionEnded: PT.bool.isRequired, + isMM: PT.bool.isRequired, isLegacyMM: PT.bool.isRequired, loadingMMSubmissionsForChallengeId: PT.string.isRequired, auth: PT.shape().isRequired, diff --git a/src/shared/containers/challenge-detail/index.jsx b/src/shared/containers/challenge-detail/index.jsx index 32bd9b7139..24a33bc377 100644 --- a/src/shared/containers/challenge-detail/index.jsx +++ b/src/shared/containers/challenge-detail/index.jsx @@ -8,7 +8,7 @@ import _ from 'lodash'; import communityActions from 'actions/tc-communities'; -import { isMM } from 'utils/challenge'; +import { isMM as checkIsMM } from 'utils/challenge'; import LoadingPagePlaceholder from 'components/LoadingPagePlaceholder'; import pageActions from 'actions/page'; import ChallengeHeader from 'components/challenge-detail/Header'; @@ -387,7 +387,8 @@ class ChallengeDetailPageContainer extends React.Component { ? results : null; const isEmpty = _.isEmpty(challenge); - const isLegacyMM = isMM(challenge) && Boolean(challenge.roundId); + const isMM = checkIsMM(challenge); + const isLegacyMM = isMM && Boolean(challenge.roundId); if (isLoadingChallenge || isLoadingTerms) { return ; @@ -556,7 +557,8 @@ class ChallengeDetailPageContainer extends React.Component { hasRegistered={challenge.isRegistered} unregistering={unregistering} submissionEnded={submissionEnded} - isLegacyMM={isLegacyMM} + isMM + isLegacyMM loadingMMSubmissionsForChallengeId={loadingMMSubmissionsForChallengeId} auth={auth} loadMMSubmissions={loadMMSubmissions} diff --git a/src/shared/utils/challenge.js b/src/shared/utils/challenge.js index 387aacc8a3..8ce43a945b 100644 --- a/src/shared/utils/challenge.js +++ b/src/shared/utils/challenge.js @@ -8,7 +8,7 @@ import _ from 'lodash'; * @param {Object} challenge challenge object */ export function isMM(challenge) { - return challenge.challengeType && challenge.challengeType.name === 'Marathon Match'; + return challenge.type === 'Marathon Match'; } /** @@ -16,7 +16,7 @@ export function isMM(challenge) { * @param {Object} challenge challenge object */ export function isDevelopMM(challenge) { - return challenge.challengeType && challenge.challengeType.name === 'Develop Marathon Match'; + return challenge.type === 'Develop Marathon Match'; } /** From a59002f75172a57b624ecb67b1068b75a462a4ef Mon Sep 17 00:00:00 2001 From: "Luiz R. Rodrigues" Date: Wed, 1 Jul 2020 18:30:47 -0300 Subject: [PATCH 2/4] Fix mySubmissions to load from challenge.submissions if not MM --- src/shared/containers/challenge-detail/index.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shared/containers/challenge-detail/index.jsx b/src/shared/containers/challenge-detail/index.jsx index 24a33bc377..a4ef040639 100644 --- a/src/shared/containers/challenge-detail/index.jsx +++ b/src/shared/containers/challenge-detail/index.jsx @@ -730,10 +730,8 @@ function mapStateToProps(state, props) { let { member } = submission; if (auth.user.handle === submission.member) { mySubmissions = submission.submissions || []; - mySubmissions = mySubmissions.map((mySubmission, index) => { - // eslint-disable-next-line no-param-reassign - mySubmission.id = mySubmissions.length - index; - return mySubmission; + mySubmissions.forEach((mySubmission, index) => { + mySubmissions[index].id = mySubmissions.length - index; }); } let submissionDetail = _.find(challenge.submissions, { createdBy: submission.createdBy }); @@ -762,6 +760,8 @@ function mapStateToProps(state, props) { member, }); }); + } else { + mySubmissions = _.filter(challenge.submissions, s => (`${s.memberId}` === `${auth.user.userId}`)); } } return { From e58d4a0910ced7195d84c34ec973ab81e44eb31d Mon Sep 17 00:00:00 2001 From: "Luiz R. Rodrigues" Date: Wed, 1 Jul 2020 18:35:52 -0300 Subject: [PATCH 3/4] Fix propTypes --- .../MySubmissions/SubmissionsList/index.jsx | 5 ++-- .../challenge-detail/MySubmissions/index.jsx | 5 ++-- .../SubmissionHistoryRow/index.jsx | 10 ++++++-- .../Submissions/SubmissionRow/index.jsx | 25 +++++++++++++++---- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/shared/components/challenge-detail/MySubmissions/SubmissionsList/index.jsx b/src/shared/components/challenge-detail/MySubmissions/SubmissionsList/index.jsx index be4bed9f5c..d6a4d8d0b9 100644 --- a/src/shared/components/challenge-detail/MySubmissions/SubmissionsList/index.jsx +++ b/src/shared/components/challenge-detail/MySubmissions/SubmissionsList/index.jsx @@ -465,9 +465,10 @@ SubmissionsListView.propTypes = { checkpoints: PT.arrayOf(PT.object), submissions: PT.arrayOf(PT.object), submissionViewable: PT.string, - track: PT.string.isRequired, + legacy: { + track: PT.string.isRequired, + }.isRequired, registrants: PT.any, - subTrack: PT.any, }).isRequired, hasRegistered: PT.bool.isRequired, unregistering: PT.bool.isRequired, diff --git a/src/shared/components/challenge-detail/MySubmissions/index.jsx b/src/shared/components/challenge-detail/MySubmissions/index.jsx index ed7a126087..c956aa0646 100644 --- a/src/shared/components/challenge-detail/MySubmissions/index.jsx +++ b/src/shared/components/challenge-detail/MySubmissions/index.jsx @@ -111,9 +111,10 @@ MySubmissionsView.propTypes = { checkpoints: PT.arrayOf(PT.object), submissions: PT.arrayOf(PT.object), submissionViewable: PT.string, - track: PT.string.isRequired, + legacy: { + track: PT.string.isRequired, + }, registrants: PT.any, - subTrack: PT.any, }).isRequired, hasRegistered: PT.bool.isRequired, unregistering: PT.bool.isRequired, diff --git a/src/shared/components/challenge-detail/Submissions/SubmissionRow/SubmissionHistoryRow/index.jsx b/src/shared/components/challenge-detail/Submissions/SubmissionRow/SubmissionHistoryRow/index.jsx index dd86579aba..d58147effb 100644 --- a/src/shared/components/challenge-detail/Submissions/SubmissionRow/SubmissionHistoryRow/index.jsx +++ b/src/shared/components/challenge-detail/Submissions/SubmissionRow/SubmissionHistoryRow/index.jsx @@ -97,9 +97,15 @@ SubmissionHistoryRow.propTypes = { member: PT.string.isRequired, isMM: PT.bool.isRequired, submission: PT.number.isRequired, - finalScore: PT.number, + finalScore: PT.oneOfType([ + PT.number, + PT.string, + ]), status: PT.string.isRequired, - provisionalScore: PT.number, + provisionalScore: PT.oneOfType([ + PT.number, + PT.string, + ]), submissionTime: PT.string.isRequired, isReviewPhaseComplete: PT.bool, submissionId: PT.string.isRequired, diff --git a/src/shared/components/challenge-detail/Submissions/SubmissionRow/index.jsx b/src/shared/components/challenge-detail/Submissions/SubmissionRow/index.jsx index 57c9900da1..c074465e48 100644 --- a/src/shared/components/challenge-detail/Submissions/SubmissionRow/index.jsx +++ b/src/shared/components/challenge-detail/Submissions/SubmissionRow/index.jsx @@ -177,16 +177,31 @@ SubmissionRow.propTypes = { openHistory: PT.bool.isRequired, member: PT.string.isRequired, submissions: PT.arrayOf(PT.shape({ - provisionalScore: PT.number, - finalScore: PT.number, - initialScore: PT.number, + provisionalScore: PT.oneOfType([ + PT.number, + PT.string, + ]), + finalScore: PT.oneOfType([ + PT.number, + PT.string, + ]), + initialScore: PT.oneOfType([ + PT.number, + PT.string, + ]), status: PT.string.isRequired, submissionId: PT.string.isRequired, submissionTime: PT.string.isRequired, })).isRequired, score: PT.shape({ - final: PT.number, - provisional: PT.number, + final: PT.oneOfType([ + PT.number, + PT.string, + ]), + provisional: PT.oneOfType([ + PT.number, + PT.string, + ]), }), rating: PT.number, toggleHistory: PT.func, From 1e9d7bb43625895899946cccdb736aebf82b5844 Mon Sep 17 00:00:00 2001 From: "Luiz R. Rodrigues" Date: Wed, 1 Jul 2020 18:44:29 -0300 Subject: [PATCH 4/4] Details Challenge - Fix check if mmSubmissions is empty --- src/shared/containers/challenge-detail/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/containers/challenge-detail/index.jsx b/src/shared/containers/challenge-detail/index.jsx index a4ef040639..15d15dc5dc 100644 --- a/src/shared/containers/challenge-detail/index.jsx +++ b/src/shared/containers/challenge-detail/index.jsx @@ -724,7 +724,7 @@ function mapStateToProps(state, props) { })); } - if (mmSubmissions) { + if (!_.isEmpty(mmSubmissions)) { mmSubmissions = mmSubmissions.map((submission) => { let registrant; let { member } = submission;