@@ -6,8 +6,8 @@ import SubmissionList from "@/components/sections/submissions/List";
6
6
import MetaData from "@/components/ui/MetaData" ;
7
7
import useNavigation from "@/hooks/useNavigation" ;
8
8
import { useDispatch } from "@/hooks/useTypedDispatch" ;
9
- import { useSelector } from "@/hooks/useTypedSelector" ;
10
- import { wrapper } from "@/store" ;
9
+ import { useMultiSelector } from "@/hooks/useTypedSelector" ;
10
+ import { IRootState , wrapper } from "@/store" ;
11
11
import { showSubmission } from "@/store/feature/communities/challenges/submissions" ;
12
12
import { initChallengeNavigationMenu } from "@/store/feature/communities/navigation.slice" ;
13
13
import { toggleBodyScrolling } from "@/store/feature/ui.slice" ;
@@ -23,7 +23,7 @@ import { useTranslation } from "next-i18next";
23
23
import { serverSideTranslations } from "next-i18next/serverSideTranslations" ;
24
24
import Head from "next/head" ;
25
25
import { useRouter } from "next/router" ;
26
- import { ReactElement , useCallback , useEffect , useMemo } from "react" ;
26
+ import { ReactElement , useCallback , useEffect , useMemo , useState } from "react" ;
27
27
28
28
/**
29
29
* Submission page
@@ -34,9 +34,12 @@ import { ReactElement, useCallback, useEffect, useMemo } from "react";
34
34
* @returns
35
35
*/
36
36
export default function Submission ( props : { pageProps : { currentCommunity : Community ; submissions : SubmissionType [ ] ; challenge : Challenge } } ) {
37
- const { submissions, challenge } = props . pageProps ;
38
- const selectedSubmission = useSelector ( ( state ) => state . submissions . current ) ;
39
-
37
+ const { challenge } = props . pageProps ;
38
+ const { selectedSubmission, submissions } = useMultiSelector < unknown , { selectedSubmission : SubmissionType ; submissions : SubmissionType [ ] } > ( {
39
+ selectedSubmission : ( state : IRootState ) => state . submissions . current ,
40
+ submissions : ( state : IRootState ) => state . submissions . list ,
41
+ } ) ;
42
+ const [ showModal , setShowModal ] = useState < boolean > ( false ) ;
40
43
const dispatch = useDispatch ( ) ;
41
44
const router = useRouter ( ) ;
42
45
const { submission_id } = router . query ;
@@ -46,6 +49,7 @@ export default function Submission(props: { pageProps: { currentCommunity: Commu
46
49
const handleCloseSubmission = useCallback ( ( ) => {
47
50
if ( ! selectedSubmission ) return ;
48
51
dispatch ( showSubmission ( "" ) ) ;
52
+ setShowModal ( false ) ;
49
53
window . history . pushState ( "" , "" , localePath ( router , router . asPath ) ) ;
50
54
dispatch ( toggleBodyScrolling ( false ) ) ;
51
55
} , [ dispatch , router , selectedSubmission ] ) ;
@@ -61,6 +65,7 @@ export default function Submission(props: { pageProps: { currentCommunity: Commu
61
65
const submission = submissions . find ( ( submission ) => submission . id === submissionId ) ;
62
66
if ( ! submission ) return ;
63
67
dispatch ( showSubmission ( submissionId ) ) ;
68
+ setShowModal ( true ) ;
64
69
dispatch ( toggleBodyScrolling ( true ) ) ;
65
70
} ,
66
71
[ dispatch , router , submissions ]
@@ -95,7 +100,7 @@ export default function Submission(props: { pageProps: { currentCommunity: Commu
95
100
< Header title = { challenge ?. name } subtitle = { t ( "communities.submission.title" ) } isTeamChallenge = { challenge ?. isTeamChallenge } isHackathon = { challenge ?. isHackathon } />
96
101
< SubmissionList />
97
102
</ div >
98
- < SubmissionPopup show = { ! ! selectedSubmission } onClose = { handleCloseSubmission } submissionId = { selectedSubmission ?. id } />
103
+ { showModal && < SubmissionPopup show = { showModal } onClose = { handleCloseSubmission } submissionId = { selectedSubmission ?. id } /> }
99
104
</ Wrapper >
100
105
</ >
101
106
) ;
0 commit comments