diff --git a/src/shared/components/Dashboard/CurrentActivity/Challenges/ChallengeCard/index.jsx b/src/shared/components/Dashboard/CurrentActivity/Challenges/ChallengeCard/index.jsx
index 4f4822c6fa..2293c5b15c 100644
--- a/src/shared/components/Dashboard/CurrentActivity/Challenges/ChallengeCard/index.jsx
+++ b/src/shared/components/Dashboard/CurrentActivity/Challenges/ChallengeCard/index.jsx
@@ -35,12 +35,18 @@ function normalizeSubTrackTagForRendering(subTrack) {
return _.startCase(_.toLower(x));
}
+function normalizeSubTrack(subTrack) {
+ const type = _.upperCase(subTrack);
+ return type.replace(/ /g, '_');
+}
+
export default function ChallengeCard({
challenge,
selectChallengeDetailsTab,
setChallengeListingFilter,
// unregisterFromChallenge,
userResources,
+ challengeSubtracksMap,
}) {
const {
phases,
@@ -51,6 +57,8 @@ export default function ChallengeCard({
type,
} = challenge;
+ const subTrackId = _.findKey(challengeSubtracksMap, { abbreviation: normalizeSubTrack(type) });
+
const { track } = legacy;
let EventTag;
@@ -100,7 +108,6 @@ export default function ChallengeCard({
const submitted = _.get(userDetails, 'hasUserSubmittedForReview');
const nextPhase = phases && _.last(phases);
- const submissionPhase = _.find(phases, { name: 'Submission' });
const nextPhaseType = _.get(nextPhase, 'phaseType');
if (submitted && _.intersection(nextPhaseType, [
@@ -108,7 +115,7 @@ export default function ChallengeCard({
'Appeal Response',
]).length) showOrLink = true;
- const submissionOpen = moment(submissionPhase.scheduledEndDate).isSameOrAfter(new Date());
+ const isChallengeOpen = status === 'Active';
const allPhases = phases || [];
let statusPhase = allPhases
@@ -141,12 +148,12 @@ export default function ChallengeCard({
setImmediate(
- () => setChallengeListingFilter({ subtracks: [type] }),
+ () => setChallengeListingFilter({ subtracks: [subTrackId] }),
)
}
theme={{ button: style.tag }}
to={`/challenges?filter[subtracks][0]=${
- encodeURIComponent(type)}`}
+ encodeURIComponent(subTrackId)}`}
>
{normalizeSubTrackTagForRendering(type)}
@@ -222,7 +229,7 @@ export default function ChallengeCard({
) : null
}
{
- submitter && submissionOpen ? (
+ submitter && isChallengeOpen ? (
))
) : (
@@ -163,4 +165,5 @@ Challenges.propTypes = {
switchShowChallengeFilter: PT.func.isRequired,
unregisterFromChallenge: PT.func.isRequired,
userResources: PT.arrayOf(PT.shape()),
+ challengeSubtracksMap: PT.shape().isRequired,
};
diff --git a/src/shared/components/Dashboard/CurrentActivity/index.jsx b/src/shared/components/Dashboard/CurrentActivity/index.jsx
index c949629257..a6b5e6c018 100644
--- a/src/shared/components/Dashboard/CurrentActivity/index.jsx
+++ b/src/shared/components/Dashboard/CurrentActivity/index.jsx
@@ -70,6 +70,7 @@ export default class MyChallenges extends React.Component {
unregisterFromChallenge,
userGroups,
userResources,
+ challengeSubtracksMap,
} = this.props;
const myCommunities = communities.filter(x => _.intersection(userGroups, x.groupIds).length)
@@ -107,6 +108,7 @@ export default class MyChallenges extends React.Component {
switchShowChallengeFilter={switchShowChallengeFilter}
unregisterFromChallenge={unregisterFromChallenge}
userResources={userResources}
+ challengeSubtracksMap={challengeSubtracksMap}
/>
) : null
}
@@ -156,4 +158,5 @@ MyChallenges.propTypes = {
unregisterFromChallenge: PT.func.isRequired,
userGroups: PT.arrayOf(PT.string).isRequired,
userResources: PT.arrayOf(PT.shape()),
+ challengeSubtracksMap: PT.shape().isRequired,
};
diff --git a/src/shared/components/Dashboard/index.jsx b/src/shared/components/Dashboard/index.jsx
index 09fe332d66..2bec6fd708 100644
--- a/src/shared/components/Dashboard/index.jsx
+++ b/src/shared/components/Dashboard/index.jsx
@@ -42,6 +42,7 @@ export default function Dashboard({
xlBadge,
// errorLoadingRss,
userResources,
+ challengeSubtracksMap,
}) {
return (
@@ -83,6 +84,7 @@ export default function Dashboard({
unregisterFromChallenge={unregisterFromChallenge}
userGroups={userGroups}
userResources={userResources}
+ challengeSubtracksMap={challengeSubtracksMap}
/>
{/* {!errorLoadingRss && (
@@ -130,4 +132,5 @@ Dashboard.propTypes = {
xlBadge: PT.string.isRequired,
// errorLoadingRss: PT.bool.isRequired,
userResources: PT.arrayOf(PT.shape()),
+ challengeSubtracksMap: PT.shape().isRequired,
};
diff --git a/src/shared/containers/Dashboard/index.jsx b/src/shared/containers/Dashboard/index.jsx
index bb1aaefaa0..1b42d6920d 100644
--- a/src/shared/containers/Dashboard/index.jsx
+++ b/src/shared/containers/Dashboard/index.jsx
@@ -193,6 +193,8 @@ export class DashboardPageContainer extends React.Component {
xlBadge,
errorLoadingRss,
userResources,
+ challengeSubtracksMap,
+ getTypes,
} = this.props;
// console.log('r', userResources);
@@ -204,6 +206,10 @@ export class DashboardPageContainer extends React.Component {
({ announcementPreviewId } = qs.parse(urlQuery));
}
+ if (_.isEmpty(challengeSubtracksMap)) {
+ getTypes();
+ }
+
return (
);
}
@@ -314,6 +321,8 @@ DashboardPageContainer.propTypes = {
errorLoadingRss: PT.bool,
getMemberResources: PT.func.isRequired,
userResources: PT.shape(),
+ challengeSubtracksMap: PT.shape().isRequired,
+ getTypes: PT.func.isRequired,
};
function mapStateToProps(state, props) {
@@ -370,6 +379,7 @@ function mapStateToProps(state, props) {
xlBadge: dash.xlBadge,
errorLoadingRss: state.rss.errorLoadingRss,
userResources: state.members.userResources,
+ challengeSubtracksMap: state.challengeListing.challengeSubtracksMap,
};
}
@@ -448,6 +458,11 @@ function mapDispatchToProps(dispatch) {
dispatch(a.unregisterInit());
dispatch(a.unregisterDone(auth, challengeId));
},
+ getTypes: () => {
+ const cl = challengeListingActions.challengeListing;
+ dispatch(cl.getChallengeTypesInit());
+ dispatch(cl.getChallengeTypesDone());
+ },
};
}