diff --git a/src/stores/questions/actions.ts b/src/stores/questions/actions.ts index 41d6a3c9..b0d2d0a0 100644 --- a/src/stores/questions/actions.ts +++ b/src/stores/questions/actions.ts @@ -123,7 +123,7 @@ export const updateQuestion = ( updateFn: (question: AnyTypedQuizQuestion) => void, ) => { setProducedState(state => { - const question = state.questions.find(q => q.id === questionId) || state.questions.find(q => q.content.id === questionId); + const question = state.questions.find(q => q.id === questionId) || state.questions.find(q => q.type !== null && q.content.id === questionId); if (!question) return; if (question.type === null) throw new Error("Cannot update untyped question, use 'updateUntypedQuestion' instead"); @@ -136,22 +136,22 @@ export const updateQuestion = ( // clearTimeout(requestTimeoutId); // requestTimeoutId = setTimeout(() => { - requestQueue.enqueue(async () => { - const q = useQuestionsStore.getState().questions.find(q => q.id === questionId) || useQuestionsStore.getState().questions.find(q => q.content.id === questionId); - console.log("мы пытаемся найти вопрос ") - if (!q) return; - if (q.type === null) throw new Error("Cannot send update request for untyped question"); - console.log(q.title) + requestQueue.enqueue(async () => { + const q = useQuestionsStore.getState().questions.find(q => q.id === questionId) || useQuestionsStore.getState().questions.find(q => q.type !== null && q.content.id === questionId); + console.log("мы пытаемся найти вопрос "); + if (!q) return; + if (q.type === null) throw new Error("Cannot send update request for untyped question"); + console.log(q.title); - const response = await questionApi.edit(questionToEditQuestionRequest(q)); + const response = await questionApi.edit(questionToEditQuestionRequest(q)); - setQuestionBackendId(questionId, response.updated); - }).catch(error => { - if (isAxiosCanceledError(error)) return; + setQuestionBackendId(questionId, response.updated); + }).catch(error => { + if (isAxiosCanceledError(error)) return; - devlog("Error editing question", { error, questionId }); - enqueueSnackbar("Не удалось сохранить вопрос"); - }); + devlog("Error editing question", { error, questionId }); + enqueueSnackbar("Не удалось сохранить вопрос"); + }); // }, REQUEST_DEBOUNCE); }; @@ -273,7 +273,7 @@ export const createTypedQuestion = async ( const question = useQuestionsStore.getState().questions.find(q => q.id === questionId); if (!question) return; if (question.type !== null) throw new Error("Cannot upgrade already typed question"); - + try { const createdQuestion = await questionApi.create({ quiz_id: question.quizId, @@ -369,7 +369,7 @@ function setProducedState( export const cleardragQuestionContentId = () => { - useQuestionsStore.setState({dragQuestionContentId: null}); + useQuestionsStore.setState({ dragQuestionContentId: null }); }; export const getQuestionById = (questionId: string | null) => { @@ -377,16 +377,19 @@ export const getQuestionById = (questionId: string | null) => { return useQuestionsStore.getState().questions.find(q => q.id === questionId) || null; }; export const getQuestionByContentId = (questionContentId: string | null) => { - console.log("questionContentId " + questionContentId) + console.log("questionContentId " + questionContentId); if (questionContentId === null) return null; return useQuestionsStore.getState().questions.find(q => { - console.log(q.content.id) - console.log(q.content.id === questionContentId) - return ( q.content.id === questionContentId)}) || null; + if (q.type === null) return false; + + console.log(q.content.id); + console.log(q.content.id === questionContentId); + return (q.content.id === questionContentId); + }) || null; }; -export const updateOpenedModalSettingsId = (id?: string) => useQuestionsStore.setState({openedModalSettingsId: id ? id : null}); +export const updateOpenedModalSettingsId = (id?: string) => useQuestionsStore.setState({ openedModalSettingsId: id ? id : null }); export const updateDragQuestionContentId = (contentId?: string) => { - console.log("contentId " + contentId) - useQuestionsStore.setState({dragQuestionContentId: contentId ? contentId : null}); -} + console.log("contentId " + contentId); + useQuestionsStore.setState({ dragQuestionContentId: contentId ? contentId : null }); +}; diff --git a/src/stores/questions/store.ts b/src/stores/questions/store.ts index ffd5cb4d..b5877be5 100644 --- a/src/stores/questions/store.ts +++ b/src/stores/questions/store.ts @@ -4,7 +4,7 @@ import { devtools } from "zustand/middleware"; export type QuestionsStore = { - questions: (AnyTypedQuizQuestion | UntypedQuizQuestion); + questions: (AnyTypedQuizQuestion | UntypedQuizQuestion)[]; openedModalSettingsId: string | null; dragQuestionContentId: string | null; };