From 3b641a5bfb8c3d2a8c0ce0c925202cf49044426c Mon Sep 17 00:00:00 2001 From: Riley Shaw Date: Wed, 27 Nov 2019 08:38:18 -0800 Subject: [PATCH] Fix #2435: only show weekly results after the week in question --- common/challenge.ts | 1 + server/src/lib/challenge.ts | 3 ++- .../pages/dashboard/challenge/challenge-list.tsx | 9 +++++---- .../components/pages/dashboard/challenge/challenge.tsx | 1 + .../components/pages/dashboard/challenge/team-card.tsx | 3 +++ 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/common/challenge.ts b/common/challenge.ts index be4fa597d5295..d4427cca6bce0 100644 --- a/common/challenge.ts +++ b/common/challenge.ts @@ -1,5 +1,6 @@ export interface WeeklyChallenge { week: number; + challengeComplete: boolean; user: { speak: number; speak_total: number; diff --git a/server/src/lib/challenge.ts b/server/src/lib/challenge.ts index db51cfe4ba487..548abb76c0ba3 100644 --- a/server/src/lib/challenge.ts +++ b/server/src/lib/challenge.ts @@ -84,7 +84,8 @@ export default class Challenge { challenge ); const weeklyProgress = { - week: progress.week < 0 ? 0 : progress.week > 2 ? 2 : progress.week, + week: Math.max(0, Math.min(progress.week, 2)), + challengeComplete: progress.week > 2, user: { speak: progress.clip_count, speak_total: progress.week === 1 ? 50 : 100, diff --git a/web/src/components/pages/dashboard/challenge/challenge-list.tsx b/web/src/components/pages/dashboard/challenge/challenge-list.tsx index 61d107c9b16ea..46eb5c394a6dc 100644 --- a/web/src/components/pages/dashboard/challenge/challenge-list.tsx +++ b/web/src/components/pages/dashboard/challenge/challenge-list.tsx @@ -35,6 +35,7 @@ interface Props extends PropsFromState { team?: boolean; type?: 'clip' | 'vote'; week?: number; + challengeComplete?: boolean; } interface State { @@ -149,7 +150,7 @@ class ChallengeList extends React.Component { render() { const { rows, isAtEnd } = this.state; - const { user, team, week } = this.props; + const { user, team, week, challengeComplete } = this.props; // TODO: Render s outside of `items` to flatten the list. const items = rows.map((row, i) => { @@ -189,7 +190,7 @@ class ChallengeList extends React.Component {
- {row.w1_points && week >= 0 ? ( + {row.w1_points && week > 0 ? ( <> { )}
- {row.w2_points && week >= 1 ? ( + {row.w2_points && week > 1 ? ( <> { )}
- {row.w3_points && week === 2 ? ( + {row.w3_points && (week > 2 || challengeComplete) ? ( <> ) { )}
diff --git a/web/src/components/pages/dashboard/challenge/team-card.tsx b/web/src/components/pages/dashboard/challenge/team-card.tsx index 3fb6f5a58e3aa..ac5bfbf8a0266 100644 --- a/web/src/components/pages/dashboard/challenge/team-card.tsx +++ b/web/src/components/pages/dashboard/challenge/team-card.tsx @@ -25,11 +25,13 @@ export default function TeamboardCard({ showVisibleIcon, showOverlay, week, + challengeComplete, }: { title: string; showVisibleIcon?: boolean; showOverlay?: (event: React.MouseEvent) => void; week?: number; + challengeComplete?: boolean; }) { const account = useAccount(); @@ -108,6 +110,7 @@ export default function TeamboardCard({ service="top-teams" ref={teamboardRef} team + challengeComplete={challengeComplete} week={week} />