From 979d0e713895d5b289eff1e25c80a3c1a80f222f Mon Sep 17 00:00:00 2001 From: nflnkr Date: Wed, 3 Apr 2024 15:42:12 +0300 Subject: [PATCH] make quiz view store component store move design list to separate file --- lib/components/QuizAnswerer.tsx | 56 +- .../ViewPublicationPage/ContactForm.tsx | 2 +- .../ViewPublicationPage/Question.tsx | 245 +++--- .../ViewPublicationPage/ResultForm.tsx | 153 ++-- .../StartPageDesktop.tsx | 354 ++++---- .../StartPageMobile.tsx | 2 +- .../StartPageViewPublication/index.tsx | 709 +++++++-------- .../ViewPublicationPage.tsx | 2 +- .../ViewPublicationPage/questions/Date.tsx | 184 ++-- .../ViewPublicationPage/questions/Emoji.tsx | 381 +++++---- .../ViewPublicationPage/questions/File.tsx | 9 +- .../ViewPublicationPage/questions/Images.tsx | 336 ++++---- .../ViewPublicationPage/questions/Number.tsx | 808 +++++++++--------- .../ViewPublicationPage/questions/Rating.tsx | 7 +- .../ViewPublicationPage/questions/Select.tsx | 154 ++-- .../ViewPublicationPage/questions/Text.tsx | 486 +++++------ .../ViewPublicationPage/questions/Variant.tsx | 512 +++++------ .../ViewPublicationPage/questions/Varimg.tsx | 397 ++++----- lib/stores/quizView.ts | 225 +++-- lib/utils/designList.ts | 36 + lib/utils/hooks/useQuestionFlowControl.ts | 411 ++++----- package.json | 2 +- 22 files changed, 2740 insertions(+), 2731 deletions(-) create mode 100644 lib/utils/designList.ts diff --git a/lib/components/QuizAnswerer.tsx b/lib/components/QuizAnswerer.tsx index bf73346..ad6a319 100644 --- a/lib/components/QuizAnswerer.tsx +++ b/lib/components/QuizAnswerer.tsx @@ -16,6 +16,7 @@ import { ErrorBoundary } from "react-error-boundary"; import useSWR from "swr"; import { ApologyPage } from "./ViewPublicationPage/ApologyPage"; import ViewPublicationPage from "./ViewPublicationPage/ViewPublicationPage"; +import { QuizViewContext, createQuizViewStore } from "@/stores/quizView"; moment.locale("ru"); @@ -28,6 +29,7 @@ type Props = { }; export default function QuizAnswerer({ quizSettings, quizId, preview = false }: Props) { + const [quizViewStore] = useState(createQuizViewStore); const [rootContainerWidth, setRootContainerWidth] = useState(() => window.innerWidth); const rootContainerRef = useRef(null); const { data, error, isLoading } = useSWR(quizSettings ? null : ["quizData", quizId], params => getQuizData(params[1]), { @@ -61,33 +63,35 @@ export default function QuizAnswerer({ quizSettings, quizId, preview = false }: if (!quizSettings) throw new Error("Quiz data is null"); return ( - - - - - - - + + + + + - + - - - - - - - - + + + + + + + + + + ); } diff --git a/lib/components/ViewPublicationPage/ContactForm.tsx b/lib/components/ViewPublicationPage/ContactForm.tsx index 764cd4e..54d20ac 100644 --- a/lib/components/ViewPublicationPage/ContactForm.tsx +++ b/lib/components/ViewPublicationPage/ContactForm.tsx @@ -25,7 +25,7 @@ import {quizThemes} from "@utils/themes/Publication/themePublication"; import {enqueueSnackbar} from "notistack"; import {useRootContainerSize} from "../../contexts/RootContainerWidthContext"; import {useQuizData} from "@contexts/QuizDataContext"; -import {DESIGN_LIST} from "@/components/ViewPublicationPage/Question"; +import { DESIGN_LIST } from "@/utils/designList"; const TextField = MuiTextField as unknown as FC; // temporary fix ts(2590) diff --git a/lib/components/ViewPublicationPage/Question.tsx b/lib/components/ViewPublicationPage/Question.tsx index da2334c..2f05850 100644 --- a/lib/components/ViewPublicationPage/Question.tsx +++ b/lib/components/ViewPublicationPage/Question.tsx @@ -21,161 +21,128 @@ import { NameplateLogoFQDark } from "@icons/NameplateLogoFQDark"; import { notReachable } from "@utils/notReachable"; import { quizThemes } from "@utils/themes/Publication/themePublication"; -import Desgin1 from "@icons/designs/design1.jpg"; -import Desgin2 from "@icons/designs/design2.jpg"; -import Desgin3 from "@icons/designs/design3.jpg"; -import Desgin4 from "@icons/designs/design4.jpg"; -import Desgin5 from "@icons/designs/design5.jpg"; -import Desgin6 from "@icons/designs/design6.jpg"; -import Desgin7 from "@icons/designs/design7.jpg"; -import Desgin8 from "@icons/designs/design8.jpg"; -import Desgin9 from "@icons/designs/design9.jpg"; -import Desgin10 from "@icons/designs/design10.jpg"; - import type { ReactNode } from "react"; -import type { QuizTheme } from "@model/settingsData"; +import { DESIGN_LIST } from "@/utils/designList"; type Props = { - currentQuestion: RealTypedQuizQuestion; - currentQuestionStepNumber: number | null; - nextButton: ReactNode; - prevButton: ReactNode; -}; - -export const DESIGN_LIST: Record = { - Design1: Desgin1, - Design2: Desgin2, - Design3: Desgin3, - Design4: Desgin4, - Design5: Desgin5, - Design6: Desgin6, - Design7: Desgin7, - Design8: Desgin8, - Design9: Desgin9, - Design10: Desgin10, - StandardTheme: "", - StandardDarkTheme: "", - PinkTheme: "", - PinkDarkTheme: "", - BlackWhiteTheme: "", - OliveTheme: "", - YellowTheme: "", - GoldDarkTheme: "", - PurpleTheme: "", - BlueTheme: "", - BlueDarkTheme: "", + currentQuestion: RealTypedQuizQuestion; + currentQuestionStepNumber: number | null; + nextButton: ReactNode; + prevButton: ReactNode; }; export const Question = ({ - currentQuestion, - currentQuestionStepNumber, - nextButton, - prevButton, + currentQuestion, + currentQuestionStepNumber, + nextButton, + prevButton, }: Props) => { - const theme = useTheme(); - const { settings, show_badge } = useQuizData(); + const theme = useTheme(); + const { settings, show_badge } = useQuizData(); - return ( - - + return ( - - - {show_badge && ( - - {quizThemes[settings.cfg.theme].isLight ? ( - - ) : ( - - )} - - )} - + + + + + {show_badge && ( + + {quizThemes[settings.cfg.theme].isLight ? ( + + ) : ( + + )} + + )} + + +