Skip to content

Commit b9b507f

Browse files
committed
feat: add showModal state
1 parent b92481f commit b9b507f

File tree

1 file changed

+12
-7
lines changed
  • src/pages/communities/[slug]/challenges/[challenge_id]/submissions

1 file changed

+12
-7
lines changed

src/pages/communities/[slug]/challenges/[challenge_id]/submissions/index.tsx

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import SubmissionList from "@/components/sections/submissions/List";
66
import MetaData from "@/components/ui/MetaData";
77
import useNavigation from "@/hooks/useNavigation";
88
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";
1111
import { showSubmission } from "@/store/feature/communities/challenges/submissions";
1212
import { initChallengeNavigationMenu } from "@/store/feature/communities/navigation.slice";
1313
import { toggleBodyScrolling } from "@/store/feature/ui.slice";
@@ -23,7 +23,7 @@ import { useTranslation } from "next-i18next";
2323
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
2424
import Head from "next/head";
2525
import { useRouter } from "next/router";
26-
import { ReactElement, useCallback, useEffect, useMemo } from "react";
26+
import { ReactElement, useCallback, useEffect, useMemo, useState } from "react";
2727

2828
/**
2929
* Submission page
@@ -34,9 +34,12 @@ import { ReactElement, useCallback, useEffect, useMemo } from "react";
3434
* @returns
3535
*/
3636
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);
4043
const dispatch = useDispatch();
4144
const router = useRouter();
4245
const { submission_id } = router.query;
@@ -46,6 +49,7 @@ export default function Submission(props: { pageProps: { currentCommunity: Commu
4649
const handleCloseSubmission = useCallback(() => {
4750
if (!selectedSubmission) return;
4851
dispatch(showSubmission(""));
52+
setShowModal(false);
4953
window.history.pushState("", "", localePath(router, router.asPath));
5054
dispatch(toggleBodyScrolling(false));
5155
}, [dispatch, router, selectedSubmission]);
@@ -61,6 +65,7 @@ export default function Submission(props: { pageProps: { currentCommunity: Commu
6165
const submission = submissions.find((submission) => submission.id === submissionId);
6266
if (!submission) return;
6367
dispatch(showSubmission(submissionId));
68+
setShowModal(true);
6469
dispatch(toggleBodyScrolling(true));
6570
},
6671
[dispatch, router, submissions]
@@ -95,7 +100,7 @@ export default function Submission(props: { pageProps: { currentCommunity: Commu
95100
<Header title={challenge?.name} subtitle={t("communities.submission.title")} isTeamChallenge={challenge?.isTeamChallenge} isHackathon={challenge?.isHackathon} />
96101
<SubmissionList />
97102
</div>
98-
<SubmissionPopup show={!!selectedSubmission} onClose={handleCloseSubmission} submissionId={selectedSubmission?.id} />
103+
{showModal && <SubmissionPopup show={showModal} onClose={handleCloseSubmission} submissionId={selectedSubmission?.id} />}
99104
</Wrapper>
100105
</>
101106
);

0 commit comments

Comments
 (0)