import { AnyTypedQuizQuestion } from "@model/questionTypes/shared"; import { QuizSettings } from "@model/settingsData"; export interface GetQuizDataResponse { cnt: number; settings?: { fp: boolean; rep: boolean; name: string; cfg: string; lim: number; due: number; delay: number; pausable: boolean; status: "start" | "stop" | "ai"; }; items: { id: number; title: string; desc: string; typ: string; req: boolean; p: number; c: string; }[]; show_badge: boolean; } export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit { console.log(quizDataResponse); const readyData = { cnt: quizDataResponse.cnt, show_badge: quizDataResponse.show_badge, settings: {} as QuizSettings["settings"], questions: [] as QuizSettings["questions"], } as QuizSettings; const items: QuizSettings["questions"] = quizDataResponse.items.map((item) => { const content = item.c ? JSON.parse(item.c) : { hint: { text: "", video: "" }, rule: { children: [], main: [], parentId: "", default: "" }, back: "", originalBack: "", autofill: false, placeholder: "", innerNameCheck: false, innerName: "", required: false, answerType: "single", onlyNumbers: false, }; if (item.c) content.id = Math.floor(Math.random() * 9999999999) + 1; return { description: item.desc, id: item.id, page: item.p, required: item.req, title: item.title, type: item.typ, content, } as unknown as AnyTypedQuizQuestion; }); readyData.questions = items; if (quizDataResponse?.settings !== undefined) { console.log("попытка парсануть сеттингс", quizDataResponse.settings); readyData.settings = { fp: quizDataResponse.settings.fp, rep: quizDataResponse.settings.rep, name: quizDataResponse.settings.name, cfg: JSON.parse(quizDataResponse?.settings.cfg), lim: quizDataResponse.settings.lim, due: quizDataResponse.settings.due, delay: quizDataResponse.settings.delay, pausable: quizDataResponse.settings.pausable, status: quizDataResponse.settings.status, }; } return readyData; }