Skip to content

Commit 593c67a

Browse files
committed
Updated contest details fetching for manual url entry
1 parent fddc6e9 commit 593c67a

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

src/pages/leaderboard/subcomponents/ContestLeaderboardWrapper.tsx

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
1-
import React from 'react';
1+
import React, { useEffect } from 'react';
22
import { Navigate, Route, Routes, useLocation, useParams } from 'react-router';
33
import { useTypedSelector } from 'src/commons/utils/Hooks';
44
import { LeaderboardContestDetails } from 'src/features/leaderboard/LeaderboardTypes';
55

66
import NotFound from '../../notFound/NotFound';
77
import ContestLeaderboard from './ContestLeaderboard';
8+
import LeaderboardActions from 'src/features/leaderboard/LeaderboardActions';
9+
import { useDispatch } from 'react-redux';
810

911
const ContestLeaderboardWrapper: React.FC = () => {
1012
const enableContestLeaderboard = useTypedSelector(
1113
store => store.session.enableContestLeaderboard
1214
);
13-
const contestAssessments = useTypedSelector(store => store.session.assessmentOverviews);
15+
16+
const dispatch = useDispatch();
17+
const contestAssessments: LeaderboardContestDetails[] = useTypedSelector(store => store.leaderboard.contests);
18+
19+
useEffect(() => {
20+
dispatch(LeaderboardActions.getContests());
21+
}, [dispatch]);
22+
23+
console.log("CONTEST ASSESSMENTS" + contestAssessments);
1424
const defaultContest =
1525
contestAssessments?.find(
16-
assessment => assessment.type == 'Contests' && assessment.isPublished
26+
assessment => assessment.published
1727
) ?? null;
18-
const contestDetails: LeaderboardContestDetails[] = (contestAssessments ?? [])
19-
.filter(assessment => assessment.type === 'Contests')
20-
.map(contest => ({
21-
contest_id: contest.id,
22-
title: contest.title,
23-
published: contest.isPublished
24-
}));
2528

2629
const courseId = useTypedSelector(store => store.session.courseId);
2730
const baseLink = `/courses/${courseId}/leaderboard`;
@@ -34,7 +37,7 @@ const ContestLeaderboardWrapper: React.FC = () => {
3437
enableContestLeaderboard ? (
3538
<ContestLeaderboardWrapperHelper
3639
baseLink={baseLink}
37-
contestDetails={contestDetails}
40+
contestDetails={contestAssessments}
3841
type="score"
3942
/>
4043
) : (
@@ -49,7 +52,7 @@ const ContestLeaderboardWrapper: React.FC = () => {
4952
enableContestLeaderboard ? (
5053
<ContestLeaderboardWrapperHelper
5154
baseLink={baseLink}
52-
contestDetails={contestDetails}
55+
contestDetails={contestAssessments}
5356
type="popularvote"
5457
/>
5558
) : (
@@ -62,7 +65,7 @@ const ContestLeaderboardWrapper: React.FC = () => {
6265
path="/"
6366
element={
6467
enableContestLeaderboard && defaultContest != null ? (
65-
<Navigate to={`${baseLink}/contests/${defaultContest.id}/score`} />
68+
<Navigate to={`${baseLink}/contests/${defaultContest.contest_id}/score`} />
6669
) : (
6770
<Navigate to={baseLink} />
6871
)
@@ -89,13 +92,16 @@ const ContestLeaderboardWrapperHelper: React.FC<{
8992
}
9093
}
9194

95+
console.log("HERE" + id);
96+
console.log("CONTEST DETAILS1" + contestDetails);
9297
if (!contestDetails.length) {
9398
// Wait for contestDetails to load
9499
return null;
95100
}
101+
console.log("CONTEST DETAILS" + contestDetails);
96102
const contest = contestDetails.find(contest => contest.contest_id === parseInt(id ?? '', 10));
97103

98-
return contest && contest.published ? (
104+
return contest !== undefined && contest.published ? (
99105
<ContestLeaderboard type={type} contestID={contest.contest_id} />
100106
) : (
101107
<Navigate to={baseLink} />

0 commit comments

Comments
 (0)