frontAnswerer/src/pages/ViewPublicationPage/ViewPublicationPage.tsx

44 lines
1.6 KiB
TypeScript
Raw Normal View History

import { Box, ThemeProvider } from "@mui/material";
2024-02-02 14:35:02 +00:00
import { useQuizData } from "@utils/hooks/useQuizData";
import { quizThemes } from "@utils/themes/Publication/themePublication";
2023-12-16 14:55:56 +00:00
import { useEffect, useState } from "react";
import { ApologyPage } from "./ApologyPage";
2023-12-16 14:55:56 +00:00
import { Question } from "./Question";
import { StartPageViewPublication } from "./StartPageViewPublication";
2023-12-16 14:55:56 +00:00
export const ViewPage = () => {
2024-02-02 14:35:02 +00:00
const { settings, questions, recentlyCompleted } = useQuizData();
const [visualStartPage, setVisualStartPage] = useState<boolean>();
2024-02-02 14:35:02 +00:00
useEffect(() => {
const link = document.querySelector('link[rel="icon"]');
if (link && settings.cfg.startpage.favIcon) {
link.setAttribute("href", settings?.cfg.startpage.favIcon);
}
2024-02-02 14:35:02 +00:00
2024-01-31 12:57:07 +00:00
document.title = settings.name;
setVisualStartPage(!settings.cfg.noStartPage);
}, [settings]);
2024-02-02 14:35:02 +00:00
const questionsCount = questions.filter(({ type }) => type !== null && type !== "result").length;
if (questionsCount === 0) return <ApologyPage message="Нет созданных вопросов" />;
return (
<ThemeProvider theme={quizThemes[settings.cfg.theme || "StandardTheme"]}>
2024-02-02 14:35:02 +00:00
{recentlyCompleted ? (
<ApologyPage message="Вы уже прошли этот опрос" />
) : (
<Box>
{visualStartPage ? (
<StartPageViewPublication setVisualStartPage={setVisualStartPage} />
) : (
<Question />
)}
</Box>
)}
</ThemeProvider>
);
2024-02-02 14:35:02 +00:00
};