@@ -4,26 +4,19 @@ import Header from "@/components/sections/communities/_partials/Header";
4
4
import Wrapper from "@/components/sections/courses/Wrapper" ;
5
5
import SubmissionList from "@/components/sections/submissions/List" ;
6
6
import MetaData from "@/components/ui/MetaData" ;
7
- import useNavigation from "@/hooks/useNavigation" ;
8
- import { useDispatch } from "@/hooks/useTypedDispatch" ;
9
- import { useMultiSelector } from "@/hooks/useTypedSelector" ;
10
- import { IRootState , wrapper } from "@/store" ;
11
- import { showSubmission } from "@/store/feature/communities/challenges/submissions" ;
12
- import { initChallengeNavigationMenu } from "@/store/feature/communities/navigation.slice" ;
13
- import { toggleBodyScrolling } from "@/store/feature/ui.slice" ;
7
+ import useSubmissionNavigation from "@/hooks/useSubmissionNavigation" ;
8
+ import { wrapper } from "@/store" ;
14
9
import { fetchAllSubmission , fetchChallenge } from "@/store/services/communities/challenges" ;
15
10
import { fetchCurrentCommunity } from "@/store/services/community.service" ;
16
11
import { Submission as SubmissionType } from "@/types/bounty" ;
17
12
import { Community } from "@/types/community" ;
18
13
import { Challenge } from "@/types/course" ;
19
14
import { NotFoundError } from "@/utilities/errors/NotFoundError" ;
20
- import { localePath } from "@/utilities/Routing" ;
21
15
import { GetServerSideProps } from "next" ;
22
16
import { useTranslation } from "next-i18next" ;
23
17
import { serverSideTranslations } from "next-i18next/serverSideTranslations" ;
24
18
import Head from "next/head" ;
25
- import { useRouter } from "next/router" ;
26
- import { ReactElement , useCallback , useEffect , useMemo , useState } from "react" ;
19
+ import { ReactElement , useMemo } from "react" ;
27
20
28
21
/**
29
22
* Submission page
@@ -35,55 +28,10 @@ import { ReactElement, useCallback, useEffect, useMemo, useState } from "react";
35
28
*/
36
29
export default function Submission ( props : { pageProps : { currentCommunity : Community ; submissions : SubmissionType [ ] ; challenge : Challenge } } ) {
37
30
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 ) ;
43
- const dispatch = useDispatch ( ) ;
44
- const router = useRouter ( ) ;
45
- const { submission_id } = router . query ;
46
- const { t } = useTranslation ( ) ;
47
- const navigation = useNavigation ( ) ;
48
-
49
- const handleCloseSubmission = useCallback ( ( ) => {
50
- if ( ! selectedSubmission ) return ;
51
- dispatch ( showSubmission ( "" ) ) ;
52
- setShowModal ( false ) ;
53
- window . history . pushState ( "" , "" , localePath ( router , router . asPath ) ) ;
54
- dispatch ( toggleBodyScrolling ( false ) ) ;
55
- } , [ dispatch , router , selectedSubmission ] ) ;
56
31
57
- useEffect ( ( ) => {
58
- dispatch ( initChallengeNavigationMenu ( navigation . community ) ) ;
59
- } , [ navigation . community , dispatch ] ) ;
60
-
61
- const handleShowSubmission = useCallback (
62
- ( e : any ) => {
63
- const newUrl = e . detail ;
64
- const submissionId = newUrl . replace ( localePath ( router , router . asPath ) , "" ) . replace ( / \/ / g, "" ) ;
65
- const submission = submissions . find ( ( submission ) => submission . id === submissionId ) ;
66
- if ( ! submission ) return ;
67
- dispatch ( showSubmission ( submissionId ) ) ;
68
- setShowModal ( true ) ;
69
- dispatch ( toggleBodyScrolling ( true ) ) ;
70
- } ,
71
- [ dispatch , router , submissions ]
72
- ) ;
32
+ const { submissions, selectedSubmission, handleCloseSubmission, showPopup} = useSubmissionNavigation ( ) ;
73
33
74
- useEffect ( ( ) => {
75
- window . addEventListener ( "onSoftNavigation" , handleShowSubmission ) ;
76
- window . addEventListener ( "popstate" , handleCloseSubmission ) ;
77
- return ( ) => {
78
- window . removeEventListener ( "onSoftNavigation" , handleShowSubmission ) ;
79
- window . removeEventListener ( "popstate" , handleCloseSubmission ) ;
80
- } ;
81
- } , [ handleCloseSubmission , handleShowSubmission ] ) ;
82
-
83
- // Temporary fix for links copied which have submission_id as a query parameter
84
- useEffect ( ( ) => {
85
- if ( submission_id ) router . push ( `${ router . asPath . split ( "?" ) [ 0 ] } /${ submission_id } ` ) ;
86
- } , [ router , submission_id ] ) ;
34
+ const { t } = useTranslation ( ) ;
87
35
88
36
const headerPaths = useMemo ( ( ) => [ t ( "communities.navigation.challenge" ) ] , [ t ] ) ;
89
37
@@ -93,14 +41,14 @@ export default function Submission(props: { pageProps: { currentCommunity: Commu
93
41
< >
94
42
< Head >
95
43
< title > { `${ t ( "communities.submission.title" ) } ${ challenge ?. name } ` } </ title >
96
- < MetaData description = { challenge ?. description as string } />
44
+ < MetaData description = { challenge ?. description } />
97
45
</ Head >
98
46
< Wrapper paths = { headerPaths } >
99
47
< div className = "flex flex-col py-4 space-y-8 text-gray-700" >
100
48
< Header title = { challenge ?. name } subtitle = { t ( "communities.submission.title" ) } isTeamChallenge = { challenge ?. isTeamChallenge } isHackathon = { challenge ?. isHackathon } />
101
49
< SubmissionList />
102
50
</ div >
103
- { showModal && < SubmissionPopup show = { showModal } onClose = { handleCloseSubmission } submissionId = { selectedSubmission ?. id } /> }
51
+ { showPopup && < SubmissionPopup show = { showPopup } onClose = { handleCloseSubmission } submissionId = { selectedSubmission ?. id } /> }
104
52
</ Wrapper >
105
53
</ >
106
54
) ;
0 commit comments