import { quizApi } from "@api/quiz"; import EyeIcon from "@icons/EyeIcon"; import VisibilityIcon from "@mui/icons-material/Visibility"; import { Box, Button, IconButton, Switch, Typography, useMediaQuery, useTheme, } from "@mui/material"; import { setQuizes, updateQuiz, setCurrentStep } from "@root/quizes/actions"; import { useCurrentQuiz } from "@root/quizes/hooks"; import { useQuizStore } from "@root/quizes/store"; import Sidebar from "@ui_kit/Sidebar"; import Stepper from "@ui_kit/Stepper"; import SwitchStepPages from "@ui_kit/switchStepPages"; import { useEffect, useState } from "react"; import { Link, useNavigate } from "react-router-dom"; import { useDebouncedCallback } from "use-debounce"; import { SidebarMobile } from "./Sidebar/SidebarMobile"; import { cleanQuestions, createResult, setQuestions, } from "@root/questions/actions"; import { updateCanCreatePublic, updateModalInfoWhyCantCreate, setShowConfirmLeaveModal, updateSomeWorkBackend, } from "@root/uiTools/actions"; import { Header } from "./Header"; import { useQuestionsStore } from "@root/questions/store"; import { questionApi } from "@api/question"; import { useUiTools } from "@root/uiTools/store"; import { AnyTypedQuizQuestion } from "@model/questionTypes/shared"; import { ModalInfoWhyCantCreate } from "./ModalInfoWhyCantCreate"; import { ConfirmLeaveModal } from "./ConfirmLeaveModal"; import { checkQuestionHint } from "@utils/checkQuestionHint"; export default function EditPage() { const quiz = useCurrentQuiz(); const { editQuizId } = useQuizStore(); const { questions } = useQuestionsStore(); console.log(questions); const { whyCantCreatePublic, showConfirmLeaveModal } = useUiTools(); const theme = useTheme(); const navigate = useNavigate(); const currentStep = useQuizStore((state) => state.currentStep); const isBranchingLogic = useMediaQuery(theme.breakpoints.down(1100)); const isMobile = useMediaQuery(theme.breakpoints.down(660)); const [nextStep, setNextStep] = useState(0); const quizConfig = quiz?.config; const [openBranchingPage, setOpenBranchingPage] = useState(false); useEffect(() => { if (editQuizId === null) navigate("/list"); }, [navigate, editQuizId]); useEffect( () => () => { // resetEditConfig(); cleanQuestions(); updateModalInfoWhyCantCreate(false); updateSomeWorkBackend(false); }, [], ); const updateQuestionHint = useDebouncedCallback( (questions: AnyTypedQuizQuestion[]) => { const problems = checkQuestionHint(questions, quiz); useUiTools.setState({ whyCantCreatePublic: problems }); if (Object.keys(problems).length > 0) { updateQuiz(quiz?.id, (state) => { state.status = "stop"; }); updateCanCreatePublic(false); } else { updateCanCreatePublic(true); } }, 600, ); useEffect(() => { updateQuestionHint(questions); }, [questions, quiz]); const followNewPage = () => { setShowConfirmLeaveModal(false); setCurrentStep(nextStep); }; if (!quizConfig) return <>; const isConditionMet = [1].includes(currentStep) && quizConfig.type !== "form"; return ( <> {/* Выбор текущей страницы редактирования чего-либо - находится здесь */} {quizConfig && ( <> )} setShowConfirmLeaveModal(false)} /> ); }