diff --git a/lib/api/quizRelase.ts b/lib/api/quizRelase.ts
index e8ba0ca..ea3d0f3 100644
--- a/lib/api/quizRelase.ts
+++ b/lib/api/quizRelase.ts
@@ -71,7 +71,7 @@ export const publicationMakeRequest = ({ url, body }: PublicationMakeRequestPara
method: "POST",
});
};
-
+let page = 0;
export async function getData(quizId: string): Promise<{
data: GetQuizDataResponse | null;
isRecentlyCompleted: boolean;
@@ -92,12 +92,13 @@ export async function getData(quizId: string): Promise<{
},
data: {
quiz_id: quizId,
- limit: 100,
- page: 0,
+ limit: 1,
+ page,
need_config: true,
},
}
);
+ page++;
const sessions = JSON.parse(localStorage.getItem("sessions") || "{}");
//Тут ещё проверка на антифрод без парса конфига. Нам не интересно время если не нужно запрещать проходить чаще чем в сутки
diff --git a/lib/components/QuizAnswerer.tsx b/lib/components/QuizAnswerer.tsx
index 451a1b3..c733d39 100644
--- a/lib/components/QuizAnswerer.tsx
+++ b/lib/components/QuizAnswerer.tsx
@@ -77,12 +77,12 @@ function QuizAnswererInner({
if (error) return ;
// if (!data) return ;
quizSettings ??= data;
- if (!quizSettings) return ;
+ if (!quizSettings) return ;
if (quizSettings.questions.length === 1 && quizSettings?.settings.cfg.noStartPage)
- return ;
- // if (quizSettings.questions.length === 1) return ;
- if (!quizId) return ;
+ return ;
+ // if (quizSettings.questions.length === 1) return ;
+ if (!quizId) return ;
const quizContainer = (
{
gap: "10px",
}}
>
- {stepNumber !== null && (
+ {stepNumber !== null && settings.status !== "ai" && (
Вопрос {stepNumber} из {questionsAmount}
diff --git a/lib/components/ViewPublicationPage/ViewPublicationPage.tsx b/lib/components/ViewPublicationPage/ViewPublicationPage.tsx
index 6d71ce7..bfa819a 100644
--- a/lib/components/ViewPublicationPage/ViewPublicationPage.tsx
+++ b/lib/components/ViewPublicationPage/ViewPublicationPage.tsx
@@ -106,7 +106,7 @@ export default function ViewPublicationPage() {
}
nextButton={
{
moveToNextQuestion();
diff --git a/lib/contexts/QuizDataContext.ts b/lib/contexts/QuizDataContext.ts
index 95d39fe..a2c3261 100644
--- a/lib/contexts/QuizDataContext.ts
+++ b/lib/contexts/QuizDataContext.ts
@@ -1,5 +1,6 @@
import { QuizSettings } from "@model/settingsData";
import { createContext, useContext } from "react";
+import { AnyTypedQuizQuestion } from "..";
export const QuizSettingsContext = createContext<
| (QuizSettings & {
diff --git a/lib/model/api/getQuizData.ts b/lib/model/api/getQuizData.ts
index 21f685c..384ef1b 100644
--- a/lib/model/api/getQuizData.ts
+++ b/lib/model/api/getQuizData.ts
@@ -12,6 +12,7 @@ export interface GetQuizDataResponse {
due: number;
delay: number;
pausable: boolean;
+ status: "start" | "stop" | "ai";
};
items: {
id: number;
@@ -49,6 +50,7 @@ export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit {
+ setQuestions((prev) => [...prev, question]);
+ };
+
//Когда квиз линейный, не ветвящийся, мы идём по вопросам по их порядковому номеру. Это их page.
//За корректность page отвечает конструктор квизов. Интересный факт, если в конструкторе удалить из середины вопрос, то случится куча запросов изменения вопросов с изменением этого page
const sortedQuestions = useMemo(() => {
@@ -200,7 +210,12 @@ export function useQuestionFlowControl() {
}, [prevQuestion]);
//рычаг управления из визуала в эту функцию
- const moveToNextQuestion = useCallback(() => {
+ const moveToNextQuestion = useCallback(async () => {
+ if (isgetting) return;
+ isgetting = true;
+ const data = await getQuizData(quizId);
+ addQuestion(data.questions[0]);
+ isgetting = false;
if (!nextQuestion) throw new Error("Next question not found");
// Засчитываем переход с вопроса дальше
@@ -246,7 +261,8 @@ export function useQuestionFlowControl() {
return {
currentQuestion,
- currentQuestionStepNumber: linearQuestionIndex === null ? null : linearQuestionIndex + 1,
+ currentQuestionStepNumber:
+ settings.status === "ai" ? null : linearQuestionIndex === null ? null : linearQuestionIndex + 1,
nextQuestion,
isNextButtonEnabled,
isPreviousButtonEnabled,