fix routing
This commit is contained in:
parent
ac0104620c
commit
7520000f5b
@ -56,7 +56,7 @@ export default function App() {
|
|||||||
{routeslink.map((e, i) => (
|
{routeslink.map((e, i) => (
|
||||||
<Route key={i} path={e.path} element={<Main page={e.page} header={e.header} sidebar={e.sidebar} />} />
|
<Route key={i} path={e.path} element={<Main page={e.page} header={e.header} sidebar={e.sidebar} />} />
|
||||||
))}
|
))}
|
||||||
<Route path="settings" element={<StartPage />} />
|
<Route path="edit" element={<StartPage />} />
|
||||||
<Route path="crop" element={<ImageCrop />} />
|
<Route path="crop" element={<ImageCrop />} />
|
||||||
<Route path="/" element={<Landing />} />
|
<Route path="/" element={<Landing />} />
|
||||||
<Route path="/signin" element={<SigninDialog />} />
|
<Route path="/signin" element={<SigninDialog />} />
|
||||||
|
|||||||
@ -34,7 +34,7 @@ export default function QuizCard({
|
|||||||
|
|
||||||
function handleEditClick() {
|
function handleEditClick() {
|
||||||
setEditQuizId(quiz.id);
|
setEditQuizId(quiz.id);
|
||||||
navigate("/settings");
|
navigate("/edit");
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import {
|
|||||||
useMediaQuery,
|
useMediaQuery,
|
||||||
useTheme,
|
useTheme,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import { decrementCurrentStep, setQuizes } from "@root/quizes/actions";
|
import { decrementCurrentStep, resetEditConfig, setQuizes } from "@root/quizes/actions";
|
||||||
import { useCurrentQuiz } from "@root/quizes/hooks";
|
import { useCurrentQuiz } from "@root/quizes/hooks";
|
||||||
import { useQuizStore } from "@root/quizes/store";
|
import { useQuizStore } from "@root/quizes/store";
|
||||||
import CustomAvatar from "@ui_kit/Header/Avatar";
|
import CustomAvatar from "@ui_kit/Header/Avatar";
|
||||||
@ -25,8 +25,8 @@ import Stepper from "@ui_kit/Stepper";
|
|||||||
import SwitchStepPages from "@ui_kit/switchStepPages";
|
import SwitchStepPages from "@ui_kit/switchStepPages";
|
||||||
import { isAxiosError } from "axios";
|
import { isAxiosError } from "axios";
|
||||||
import { enqueueSnackbar } from "notistack";
|
import { enqueueSnackbar } from "notistack";
|
||||||
import { useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link, useNavigate } from "react-router-dom";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import { SidebarMobile } from "./Sidebar/SidebarMobile";
|
import { SidebarMobile } from "./Sidebar/SidebarMobile";
|
||||||
|
|
||||||
@ -42,6 +42,8 @@ export default function StartPage() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const quizId = useQuizStore(state => state.editQuizId);
|
||||||
const { quiz } = useCurrentQuiz();
|
const { quiz } = useCurrentQuiz();
|
||||||
const currentStep = useQuizStore(state => state.currentStep);
|
const currentStep = useQuizStore(state => state.currentStep);
|
||||||
const isTablet = useMediaQuery(theme.breakpoints.down(1000));
|
const isTablet = useMediaQuery(theme.breakpoints.down(1000));
|
||||||
@ -50,6 +52,12 @@ export default function StartPage() {
|
|||||||
|
|
||||||
const quizConfig = quiz?.config;
|
const quizConfig = quiz?.config;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (quizId === null) navigate("/list");
|
||||||
|
}, [navigate, quizId]);
|
||||||
|
|
||||||
|
useEffect(() => () => resetEditConfig(), []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/*хедер*/}
|
{/*хедер*/}
|
||||||
|
|||||||
@ -14,6 +14,11 @@ export const setEditQuizId = (quizId: number | null) => setProducedState(state =
|
|||||||
state.editQuizId = quizId;
|
state.editQuizId = quizId;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const resetEditConfig = () => setProducedState(state => {
|
||||||
|
state.editQuizId = null;
|
||||||
|
state.currentStep = 1;
|
||||||
|
});
|
||||||
|
|
||||||
export const setQuizes = (quizes: RawQuiz[] | null) => setProducedState(state => {
|
export const setQuizes = (quizes: RawQuiz[] | null) => setProducedState(state => {
|
||||||
state.quizById = {};
|
state.quizById = {};
|
||||||
if (quizes === null) return;
|
if (quizes === null) return;
|
||||||
@ -103,7 +108,7 @@ export const createQuiz = async (navigate: NavigateFunction) => {
|
|||||||
|
|
||||||
setQuiz(rawQuizToQuiz(quiz));
|
setQuiz(rawQuizToQuiz(quiz));
|
||||||
setEditQuizId(quiz.id);
|
setEditQuizId(quiz.id);
|
||||||
navigate("/settings");
|
navigate("/edit");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
devlog("Error creating quiz", error);
|
devlog("Error creating quiz", error);
|
||||||
|
|
||||||
@ -173,9 +178,9 @@ export const updateQuizWithFnOptimistic = async (
|
|||||||
setQuiz(currentUpdatedQuiz);
|
setQuiz(currentUpdatedQuiz);
|
||||||
try {
|
try {
|
||||||
const { updated: newId } = await quizApi.edit(quizToEditQuizRequest(currentUpdatedQuiz), controller.signal);
|
const { updated: newId } = await quizApi.edit(quizToEditQuizRequest(currentUpdatedQuiz), controller.signal);
|
||||||
// await new Promise((resolve, reject) => setTimeout(reject, 2000, new Error("Api rejected")));
|
|
||||||
|
|
||||||
setQuizField(quiz.id, "id", newId);
|
setQuizField(quiz.id, "id", newId);
|
||||||
|
setEditQuizId(newId);
|
||||||
|
|
||||||
controller = null;
|
controller = null;
|
||||||
savedOriginalQuiz = null;
|
savedOriginalQuiz = null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user