import { questionApi } from "@api/question"; import { devlog } from "@frontend/kitui"; import { QuizAnswerer } from "@frontend/squzanswerer"; import { rawQuestionToQuestion } from "@model/question/question"; import { Box } from "@mui/material"; import { useQuizes } from "@root/quizes/hooks"; import { isAxiosError } from "axios"; import { enqueueSnackbar } from "notistack"; import { useParams } from "react-router-dom"; import useSWR from "swr"; import { useYandexMetrics } from "@utils/hooks/useYandexMetrics"; export default function ViewPublicationPage() { const quizId = useParams().quizId; const { quizes, error: quizesError, isLoading: quizesIsLoading, } = useQuizes(); if (!quizId) return null; const quiz = quizes?.find((quiz) => quiz.qid === quizId); const yandexMetricsNumber = quiz?.config.yandexMetricsNumber; useYandexMetrics(yandexMetricsNumber); const { data: rawQuestions, isLoading: questionsIsLoading, error: questionsError, } = useSWR( ["questions", quiz?.backendId], ([, id]) => questionApi.getList({ quiz_id: id }), { onError: (error) => { const message = isAxiosError(error) ? error.response?.data ?? "" : ""; devlog("Error getting question list", error); enqueueSnackbar(`Не удалось получить вопросы. ${message}`); }, }, ); if (quizesError) { console.error(`Error fetching quiz ${quizId}`, quizesError); return null; } if (questionsError) { console.error(`Error fetching questions ${quizId}`, questionsError); return null; } if (quizesIsLoading) return null; if (questionsIsLoading) return null; if (!quiz) throw new Error("Quiz not found"); if (!rawQuestions) throw new Error("Questions not found"); const questions = rawQuestions.map(rawQuestionToQuestion); return ( ); }