1
- import React from 'react' ;
1
+ import React , { useEffect } from 'react' ;
2
2
import { Navigate , Route , Routes , useLocation , useParams } from 'react-router' ;
3
3
import { useTypedSelector } from 'src/commons/utils/Hooks' ;
4
4
import { LeaderboardContestDetails } from 'src/features/leaderboard/LeaderboardTypes' ;
5
5
6
6
import NotFound from '../../notFound/NotFound' ;
7
7
import ContestLeaderboard from './ContestLeaderboard' ;
8
+ import LeaderboardActions from 'src/features/leaderboard/LeaderboardActions' ;
9
+ import { useDispatch } from 'react-redux' ;
8
10
9
11
const ContestLeaderboardWrapper : React . FC = ( ) => {
10
12
const enableContestLeaderboard = useTypedSelector (
11
13
store => store . session . enableContestLeaderboard
12
14
) ;
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 ) ;
14
24
const defaultContest =
15
25
contestAssessments ?. find (
16
- assessment => assessment . type == 'Contests' && assessment . isPublished
26
+ assessment => assessment . published
17
27
) ?? 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
- } ) ) ;
25
28
26
29
const courseId = useTypedSelector ( store => store . session . courseId ) ;
27
30
const baseLink = `/courses/${ courseId } /leaderboard` ;
@@ -34,7 +37,7 @@ const ContestLeaderboardWrapper: React.FC = () => {
34
37
enableContestLeaderboard ? (
35
38
< ContestLeaderboardWrapperHelper
36
39
baseLink = { baseLink }
37
- contestDetails = { contestDetails }
40
+ contestDetails = { contestAssessments }
38
41
type = "score"
39
42
/>
40
43
) : (
@@ -49,7 +52,7 @@ const ContestLeaderboardWrapper: React.FC = () => {
49
52
enableContestLeaderboard ? (
50
53
< ContestLeaderboardWrapperHelper
51
54
baseLink = { baseLink }
52
- contestDetails = { contestDetails }
55
+ contestDetails = { contestAssessments }
53
56
type = "popularvote"
54
57
/>
55
58
) : (
@@ -62,7 +65,7 @@ const ContestLeaderboardWrapper: React.FC = () => {
62
65
path = "/"
63
66
element = {
64
67
enableContestLeaderboard && defaultContest != null ? (
65
- < Navigate to = { `${ baseLink } /contests/${ defaultContest . id } /score` } />
68
+ < Navigate to = { `${ baseLink } /contests/${ defaultContest . contest_id } /score` } />
66
69
) : (
67
70
< Navigate to = { baseLink } />
68
71
)
@@ -89,13 +92,16 @@ const ContestLeaderboardWrapperHelper: React.FC<{
89
92
}
90
93
}
91
94
95
+ console . log ( "HERE" + id ) ;
96
+ console . log ( "CONTEST DETAILS1" + contestDetails ) ;
92
97
if ( ! contestDetails . length ) {
93
98
// Wait for contestDetails to load
94
99
return null ;
95
100
}
101
+ console . log ( "CONTEST DETAILS" + contestDetails ) ;
96
102
const contest = contestDetails . find ( contest => contest . contest_id === parseInt ( id ?? '' , 10 ) ) ;
97
103
98
- return contest && contest . published ? (
104
+ return contest !== undefined && contest . published ? (
99
105
< ContestLeaderboard type = { type } contestID = { contest . contest_id } />
100
106
) : (
101
107
< Navigate to = { baseLink } />
0 commit comments