без логов
This commit is contained in:
parent
0c9b6e5b7a
commit
147b776550
@ -32,19 +32,13 @@ export function useQuizData(quizId: string, preview: boolean = false) {
|
|||||||
needConfig: true,
|
needConfig: true,
|
||||||
});
|
});
|
||||||
//firstData.settings.status = "ai";
|
//firstData.settings.status = "ai";
|
||||||
console.log("useQuizData: firstData received:", firstData);
|
|
||||||
console.log("useQuizData: firstData.settings:", firstData.settings);
|
|
||||||
|
|
||||||
initDataManager({
|
initDataManager({
|
||||||
status: firstData.settings.status,
|
status: firstData.settings.status,
|
||||||
haveRoot: firstData.settings.cfg.haveRoot,
|
haveRoot: firstData.settings.cfg.haveRoot,
|
||||||
});
|
});
|
||||||
console.log("useQuizData: calling setQuizData with firstData");
|
|
||||||
setQuizData(firstData);
|
setQuizData(firstData);
|
||||||
|
|
||||||
// Определяем нужно ли загружать все данные
|
|
||||||
console.log("Определяем нужно ли загружать все данные");
|
|
||||||
console.log(firstData.settings.status);
|
|
||||||
if (!["ai"].includes(firstData.settings.status)) {
|
if (!["ai"].includes(firstData.settings.status)) {
|
||||||
setNeedFullLoad(true); // Триггерит новый запрос через изменение ключа
|
setNeedFullLoad(true); // Триггерит новый запрос через изменение ключа
|
||||||
return firstData;
|
return firstData;
|
||||||
@ -80,10 +74,6 @@ export function useQuizData(quizId: string, preview: boolean = false) {
|
|||||||
limit: 1,
|
limit: 1,
|
||||||
needConfig: false,
|
needConfig: false,
|
||||||
});
|
});
|
||||||
console.log(
|
|
||||||
"AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE "
|
|
||||||
);
|
|
||||||
console.log(data);
|
|
||||||
addQuestions(data.questions);
|
addQuestions(data.questions);
|
||||||
changeNextLoading(false);
|
changeNextLoading(false);
|
||||||
|
|
||||||
@ -94,7 +84,6 @@ export function useQuizData(quizId: string, preview: boolean = false) {
|
|||||||
questions: [...currentState.questions, ...data.questions],
|
questions: [...currentState.questions, ...data.questions],
|
||||||
};
|
};
|
||||||
} catch (p) {
|
} catch (p) {
|
||||||
console.log(p);
|
|
||||||
setPage(questions.length);
|
setPage(questions.length);
|
||||||
changeNextLoading(false);
|
changeNextLoading(false);
|
||||||
}
|
}
|
||||||
|
@ -168,10 +168,7 @@ export async function getAndParceData(props: GetDataProps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Парсим строки в строках
|
//Парсим строки в строках
|
||||||
console.log("до парса_______________________");
|
|
||||||
const quizSettings = replaceSpacesToEmptyLines(parseQuizData(quizDataResponse));
|
const quizSettings = replaceSpacesToEmptyLines(parseQuizData(quizDataResponse));
|
||||||
console.log("после парса_______________________");
|
|
||||||
console.log(quizSettings);
|
|
||||||
//Единоразово стрингифаим ВСЁ распаршенное и удаляем лишние пробелы
|
//Единоразово стрингифаим ВСЁ распаршенное и удаляем лишние пробелы
|
||||||
const res = JSON.parse(
|
const res = JSON.parse(
|
||||||
JSON.stringify({ data: quizSettings })
|
JSON.stringify({ data: quizSettings })
|
||||||
|
@ -23,8 +23,6 @@ import "moment/dist/locale/ru";
|
|||||||
import { useQuizStore, setQuizData, addquizid } from "@/stores/useQuizStore";
|
import { useQuizStore, setQuizData, addquizid } from "@/stores/useQuizStore";
|
||||||
import { initDataManager, statusOfQuiz } from "@/utils/hooks/useQuestionFlowControl";
|
import { initDataManager, statusOfQuiz } from "@/utils/hooks/useQuestionFlowControl";
|
||||||
|
|
||||||
console.log("🚀 QuizAnswerer: Component module loaded");
|
|
||||||
|
|
||||||
moment.locale("ru");
|
moment.locale("ru");
|
||||||
const localeText = ruRU.components.MuiLocalizationProvider.defaultProps.localeText;
|
const localeText = ruRU.components.MuiLocalizationProvider.defaultProps.localeText;
|
||||||
|
|
||||||
@ -45,13 +43,6 @@ function QuizAnswererInner({
|
|||||||
className,
|
className,
|
||||||
disableGlobalCss = false,
|
disableGlobalCss = false,
|
||||||
}: Props) {
|
}: Props) {
|
||||||
console.log("🔧 QuizAnswererInner: Component function called with props:", {
|
|
||||||
quizId,
|
|
||||||
preview,
|
|
||||||
changeFaviconAndTitle,
|
|
||||||
disableGlobalCss,
|
|
||||||
});
|
|
||||||
|
|
||||||
const [quizViewStore] = useState(createQuizViewStore);
|
const [quizViewStore] = useState(createQuizViewStore);
|
||||||
const [rootContainerWidth, setRootContainerWidth] = useState<number>(() => window.innerWidth);
|
const [rootContainerWidth, setRootContainerWidth] = useState<number>(() => window.innerWidth);
|
||||||
const rootContainerRef = useRef<HTMLDivElement>(null);
|
const rootContainerRef = useRef<HTMLDivElement>(null);
|
||||||
@ -61,21 +52,11 @@ function QuizAnswererInner({
|
|||||||
const r = useQuizStore();
|
const r = useQuizStore();
|
||||||
const { settings, questions } = useQuizStore();
|
const { settings, questions } = useQuizStore();
|
||||||
|
|
||||||
console.log("🔍 QuizAnswererInner: Component state initialized");
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("🔧 QuizAnswererInner: addquizid effect triggered");
|
|
||||||
addquizid(quizId);
|
addquizid(quizId);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("🔍 QuizAnswererInner: Debug effect - settings:", settings);
|
|
||||||
console.log("🔍 QuizAnswererInner: Debug effect - questions:", questions);
|
|
||||||
console.log("🔍 QuizAnswererInner: Debug effect - r:", r);
|
|
||||||
}, [questions, settings]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log("🔧 QuizAnswererInner: Metrics effect triggered");
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
vkMetrics.quizOpened();
|
vkMetrics.quizOpened();
|
||||||
yandexMetrics.quizOpened();
|
yandexMetrics.quizOpened();
|
||||||
@ -85,7 +66,6 @@ function QuizAnswererInner({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
//Хук на случай если данные переданы нам сразу, а не "нам нужно их запросить"
|
//Хук на случай если данные переданы нам сразу, а не "нам нужно их запросить"
|
||||||
if (quizSettings !== undefined) {
|
if (quizSettings !== undefined) {
|
||||||
console.log("🔧 QuizAnswererInner: setQuizData effect triggered with quizSettings");
|
|
||||||
setQuizData(quizSettings);
|
setQuizData(quizSettings);
|
||||||
initDataManager({
|
initDataManager({
|
||||||
status: quizSettings.settings.status,
|
status: quizSettings.settings.status,
|
||||||
@ -95,7 +75,6 @@ function QuizAnswererInner({
|
|||||||
}, [quizSettings]);
|
}, [quizSettings]);
|
||||||
|
|
||||||
useLayoutEffect(() => {
|
useLayoutEffect(() => {
|
||||||
console.log("🔧 QuizAnswererInner: Layout effect triggered");
|
|
||||||
if (rootContainerRef.current) setRootContainerWidth(rootContainerRef.current.clientWidth);
|
if (rootContainerRef.current) setRootContainerWidth(rootContainerRef.current.clientWidth);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@ -112,45 +91,27 @@ function QuizAnswererInner({
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
console.log("🔍 QuizAnswererInner: About to render, current state:");
|
|
||||||
console.log("🔍 QuizAnswererInner: isLoading:", isLoading);
|
|
||||||
console.log("🔍 QuizAnswererInner: error:", error);
|
|
||||||
console.log("🔍 QuizAnswererInner: settings keys count:", Object.keys(settings).length);
|
|
||||||
console.log("🔍 QuizAnswererInner: questions length:", questions.length);
|
|
||||||
|
|
||||||
console.log("settings");
|
|
||||||
console.log(settings);
|
|
||||||
if (isLoading && !questions.length) {
|
if (isLoading && !questions.length) {
|
||||||
console.log("🔍 QuizAnswererInner: Rendering LoadingSkeleton");
|
|
||||||
return <LoadingSkeleton />;
|
return <LoadingSkeleton />;
|
||||||
}
|
}
|
||||||
console.log("error");
|
|
||||||
console.log(error);
|
|
||||||
if (error) {
|
if (error) {
|
||||||
console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to error");
|
|
||||||
return <ApologyPage error={error} />;
|
return <ApologyPage error={error} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Object.keys(settings).length == 0) {
|
if (Object.keys(settings).length == 0) {
|
||||||
console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to empty settings");
|
|
||||||
return <ApologyPage error={new Error("quiz data is null")} />;
|
return <ApologyPage error={new Error("quiz data is null")} />;
|
||||||
}
|
}
|
||||||
if (questions.length === 0) {
|
if (questions.length === 0) {
|
||||||
console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to no questions");
|
|
||||||
return <ApologyPage error={new Error("No questions found")} />;
|
return <ApologyPage error={new Error("No questions found")} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (questions.length === 1 && settings.cfg.noStartPage && statusOfQuiz != "ai") {
|
if (questions.length === 1 && settings.cfg.noStartPage && statusOfQuiz != "ai") {
|
||||||
console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to quiz is empty");
|
|
||||||
return <ApologyPage error={new Error("quiz is empty")} />;
|
return <ApologyPage error={new Error("quiz is empty")} />;
|
||||||
}
|
}
|
||||||
if (!quizId) {
|
if (!quizId) {
|
||||||
console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to no quiz id");
|
|
||||||
return <ApologyPage error={new Error("no quiz id")} />;
|
return <ApologyPage error={new Error("no quiz id")} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("🔍 QuizAnswererInner: Rendering main quiz container");
|
|
||||||
|
|
||||||
const quizContainer = (
|
const quizContainer = (
|
||||||
<Box
|
<Box
|
||||||
ref={rootContainerRef}
|
ref={rootContainerRef}
|
||||||
@ -191,8 +152,6 @@ function QuizAnswererInner({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
export default function QuizAnswerer(props: Props) {
|
export default function QuizAnswerer(props: Props) {
|
||||||
console.log("🔧 QuizAnswerer: Main component function called with props:", props);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HelmetProvider>
|
<HelmetProvider>
|
||||||
<LocalizationProvider
|
<LocalizationProvider
|
||||||
|
@ -6,11 +6,7 @@ type Props = Partial<FallbackProps>;
|
|||||||
|
|
||||||
export const ApologyPage = ({ error }: Props) => {
|
export const ApologyPage = ({ error }: Props) => {
|
||||||
let message = error.message || error.response?.data || " ";
|
let message = error.message || error.response?.data || " ";
|
||||||
console.log("message");
|
|
||||||
console.log(message.toLowerCase());
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
console.log("t");
|
|
||||||
console.log(t(message.toLowerCase()));
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
|
@ -17,17 +17,6 @@ export const Footer = ({ stepNumber, nextButton, prevButton }: FooterProps) => {
|
|||||||
const questionsAmount = questions.filter(({ type }) => type !== "result").length;
|
const questionsAmount = questions.filter(({ type }) => type !== "result").length;
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
|
|
||||||
// Диагностика i18n в Footer
|
|
||||||
console.log("🔍 Footer: useTranslation called");
|
|
||||||
console.log("🔍 Footer: i18n instance:", i18n);
|
|
||||||
console.log("🔍 Footer: i18n.isInitialized:", i18n.isInitialized);
|
|
||||||
console.log("🔍 Footer: i18n.language:", i18n.language);
|
|
||||||
console.log("🔍 Footer: Testing translations:");
|
|
||||||
console.log("🔍 Footer: t('Step'):", t("Step"));
|
|
||||||
console.log("🔍 Footer: t('of'):", t("of"));
|
|
||||||
console.log("🔍 Footer: t('Prev'):", t("Prev"));
|
|
||||||
console.log("🔍 Footer: t('Next'):", t("Next"));
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
|
@ -21,13 +21,9 @@ import unscreen from "@/ui_kit/unscreen";
|
|||||||
import { changeNextLoading, useQuizStore } from "@/stores/useQuizStore";
|
import { changeNextLoading, useQuizStore } from "@/stores/useQuizStore";
|
||||||
import { polyfillCountryFlagEmojis } from "country-flag-emoji-polyfill";
|
import { polyfillCountryFlagEmojis } from "country-flag-emoji-polyfill";
|
||||||
|
|
||||||
console.log("🚀 ViewPublicationPage: Component module loaded");
|
|
||||||
|
|
||||||
polyfillCountryFlagEmojis();
|
polyfillCountryFlagEmojis();
|
||||||
|
|
||||||
export default function ViewPublicationPage() {
|
export default function ViewPublicationPage() {
|
||||||
console.log("🔧 ViewPublicationPage: Component function called");
|
|
||||||
|
|
||||||
const { settings, recentlyCompleted, quizId, preview, changeFaviconAndTitle } = useQuizStore();
|
const { settings, recentlyCompleted, quizId, preview, changeFaviconAndTitle } = useQuizStore();
|
||||||
const answers = useQuizViewStore((state) => state.answers);
|
const answers = useQuizViewStore((state) => state.answers);
|
||||||
const ownVariants = useQuizViewStore((state) => state.ownVariants);
|
const ownVariants = useQuizViewStore((state) => state.ownVariants);
|
||||||
@ -46,12 +42,7 @@ export default function ViewPublicationPage() {
|
|||||||
useYandexMetrics(settings?.cfg?.yandexMetricsNumber, preview);
|
useYandexMetrics(settings?.cfg?.yandexMetricsNumber, preview);
|
||||||
useVKMetrics(settings?.cfg?.vkMetricsNumber, preview);
|
useVKMetrics(settings?.cfg?.vkMetricsNumber, preview);
|
||||||
|
|
||||||
console.log("🔍 ViewPublicationPage: Component state initialized");
|
|
||||||
console.log("🔍 ViewPublicationPage: currentQuizStep:", currentQuizStep);
|
|
||||||
console.log("🔍 ViewPublicationPage: currentQuestion:", currentQuestion);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("🔧 ViewPublicationPage: unscreen effect triggered");
|
|
||||||
const root = document.getElementById("root");
|
const root = document.getElementById("root");
|
||||||
const overlay = document.getElementById("hideoverlay");
|
const overlay = document.getElementById("hideoverlay");
|
||||||
|
|
||||||
@ -80,7 +71,6 @@ export default function ViewPublicationPage() {
|
|||||||
if (currentQuizStep === "startpage" && settings.cfg.noStartPage) currentQuizStep = "question";
|
if (currentQuizStep === "startpage" && settings.cfg.noStartPage) currentQuizStep = "question";
|
||||||
|
|
||||||
if (!currentQuestion) {
|
if (!currentQuestion) {
|
||||||
console.log("🔍 ViewPublicationPage: No current question, rendering error");
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider theme={quizThemes[settings.cfg.theme || "StandardTheme"].theme}>
|
<ThemeProvider theme={quizThemes[settings.cfg.theme || "StandardTheme"].theme}>
|
||||||
<Typography
|
<Typography
|
||||||
@ -95,23 +85,18 @@ export default function ViewPublicationPage() {
|
|||||||
|
|
||||||
const currentAnswer = answers.find(({ questionId }) => questionId === currentQuestion.id);
|
const currentAnswer = answers.find(({ questionId }) => questionId === currentQuestion.id);
|
||||||
|
|
||||||
console.log("🔍 ViewPublicationPage: About to render quiz step:", currentQuizStep);
|
|
||||||
|
|
||||||
let quizStepElement: ReactElement;
|
let quizStepElement: ReactElement;
|
||||||
switch (currentQuizStep) {
|
switch (currentQuizStep) {
|
||||||
case "startpage": {
|
case "startpage": {
|
||||||
console.log("🔍 ViewPublicationPage: Rendering startpage");
|
|
||||||
quizStepElement = <StartPageViewPublication />;
|
quizStepElement = <StartPageViewPublication />;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "question": {
|
case "question": {
|
||||||
if (currentQuestion.type === "result") {
|
if (currentQuestion.type === "result") {
|
||||||
console.log("🔍 ViewPublicationPage: Rendering result form");
|
|
||||||
quizStepElement = <ResultForm resultQuestion={currentQuestion} />;
|
quizStepElement = <ResultForm resultQuestion={currentQuestion} />;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("🔍 ViewPublicationPage: Rendering question");
|
|
||||||
quizStepElement = (
|
quizStepElement = (
|
||||||
<Question
|
<Question
|
||||||
key={currentQuestion.id}
|
key={currentQuestion.id}
|
||||||
|
@ -36,10 +36,6 @@ export const Number = ({ currentQuestion }: NumberProps) => {
|
|||||||
answer ||
|
answer ||
|
||||||
(reversed ? max + min - currentQuestion.content.start + "—" + max : currentQuestion.content.start + "—" + max);
|
(reversed ? max + min - currentQuestion.content.start + "—" + max : currentQuestion.content.start + "—" + max);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log("reversed:", reversed);
|
|
||||||
}, [reversed]);
|
|
||||||
|
|
||||||
const sendAnswerToBackend = async (value: string, noUpdate = false) => {
|
const sendAnswerToBackend = async (value: string, noUpdate = false) => {
|
||||||
if (!noUpdate) {
|
if (!noUpdate) {
|
||||||
updateAnswer(currentQuestion.id, value, 0);
|
updateAnswer(currentQuestion.id, value, 0);
|
||||||
|
@ -12,14 +12,6 @@ export default function NextButton({ isNextButtonEnabled, moveToNextQuestion }:
|
|||||||
const { settings, nextLoading } = useQuizStore();
|
const { settings, nextLoading } = useQuizStore();
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
|
|
||||||
// Диагностика i18n в NextButton
|
|
||||||
console.log("🔍 NextButton: useTranslation called");
|
|
||||||
console.log("🔍 NextButton: i18n instance:", i18n);
|
|
||||||
console.log("🔍 NextButton: i18n.isInitialized:", i18n.isInitialized);
|
|
||||||
console.log("🔍 NextButton: i18n.language:", i18n.language);
|
|
||||||
console.log("🔍 NextButton: Testing translation:");
|
|
||||||
console.log("🔍 NextButton: t('Next'):", t("Next"));
|
|
||||||
|
|
||||||
return nextLoading ? (
|
return nextLoading ? (
|
||||||
<Skeleton
|
<Skeleton
|
||||||
variant="rectangular"
|
variant="rectangular"
|
||||||
|
@ -15,14 +15,6 @@ export default function PrevButton({ isPreviousButtonEnabled, moveToPrevQuestion
|
|||||||
const isMobileMini = useRootContainerSize() < 382;
|
const isMobileMini = useRootContainerSize() < 382;
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
|
|
||||||
// Диагностика i18n в PrevButton
|
|
||||||
console.log("🔍 PrevButton: useTranslation called");
|
|
||||||
console.log("🔍 PrevButton: i18n instance:", i18n);
|
|
||||||
console.log("🔍 PrevButton: i18n.isInitialized:", i18n.isInitialized);
|
|
||||||
console.log("🔍 PrevButton: i18n.language:", i18n.language);
|
|
||||||
console.log("🔍 PrevButton: Testing translation:");
|
|
||||||
console.log("🔍 PrevButton: t('Prev'):", t("Prev"));
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
disabled={!isPreviousButtonEnabled}
|
disabled={!isPreviousButtonEnabled}
|
||||||
|
@ -27,7 +27,6 @@ export interface GetQuizDataResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit<QuizSettings, "recentlyCompleted"> {
|
export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit<QuizSettings, "recentlyCompleted"> {
|
||||||
console.log(quizDataResponse);
|
|
||||||
const readyData = {
|
const readyData = {
|
||||||
cnt: quizDataResponse.cnt,
|
cnt: quizDataResponse.cnt,
|
||||||
show_badge: quizDataResponse.show_badge,
|
show_badge: quizDataResponse.show_badge,
|
||||||
@ -67,7 +66,6 @@ export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit<QuizS
|
|||||||
readyData.questions = items;
|
readyData.questions = items;
|
||||||
|
|
||||||
if (quizDataResponse?.settings !== undefined) {
|
if (quizDataResponse?.settings !== undefined) {
|
||||||
console.log("попытка парсануть сеттингс", quizDataResponse.settings);
|
|
||||||
readyData.settings = {
|
readyData.settings = {
|
||||||
fp: quizDataResponse.settings.fp,
|
fp: quizDataResponse.settings.fp,
|
||||||
rep: quizDataResponse.settings.rep,
|
rep: quizDataResponse.settings.rep,
|
||||||
|
@ -25,22 +25,14 @@ export const useQuizStore = create<QuizStore>(() => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
export const setQuizData = (data: QuizSettings) => {
|
export const setQuizData = (data: QuizSettings) => {
|
||||||
console.log("setQuizData called with:");
|
|
||||||
console.log("data:", data);
|
|
||||||
console.log("data.settings:", data.settings);
|
|
||||||
console.log("data.questions:", data.questions);
|
|
||||||
|
|
||||||
const currentState = useQuizStore.getState();
|
const currentState = useQuizStore.getState();
|
||||||
console.log("Current state before update:", currentState);
|
|
||||||
|
|
||||||
useQuizStore.setState((state: QuizStore) => {
|
useQuizStore.setState((state: QuizStore) => {
|
||||||
const newState = { ...state, ...data };
|
const newState = { ...state, ...data };
|
||||||
console.log("New state after update:", newState);
|
|
||||||
return newState;
|
return newState;
|
||||||
});
|
});
|
||||||
|
|
||||||
const updatedState = useQuizStore.getState();
|
const updatedState = useQuizStore.getState();
|
||||||
console.log("State after setState:", updatedState);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const addQuestions = (newQuestions: AnyTypedQuizQuestion[]) =>
|
export const addQuestions = (newQuestions: AnyTypedQuizQuestion[]) =>
|
||||||
|
@ -37,6 +37,6 @@ async function sendErrorsToServer() {
|
|||||||
// body: errorsQueue,
|
// body: errorsQueue,
|
||||||
// useToken: true,
|
// useToken: true,
|
||||||
// });
|
// });
|
||||||
console.log(`Fake-sending ${errorsQueue.length} errors to server`, errorsQueue);
|
console.info(`Fake-sending ${errorsQueue.length} errors to server`, errorsQueue);
|
||||||
errorsQueue = [];
|
errorsQueue = [];
|
||||||
}
|
}
|
||||||
|
@ -14,11 +14,6 @@ export function useAIQuiz() {
|
|||||||
//Получаем инфо о квизе и список вопросов.
|
//Получаем инфо о квизе и список вопросов.
|
||||||
const { settings, questions, quizId, cnt, quizStep } = useQuizStore();
|
const { settings, questions, quizId, cnt, quizStep } = useQuizStore();
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log("useQuestionFlowControl useEffect");
|
|
||||||
console.log(questions);
|
|
||||||
}, [questions]);
|
|
||||||
|
|
||||||
//Список ответов на вопрос. Мы записываем ответы локально, параллельно отправляя на бек информацию о ответах
|
//Список ответов на вопрос. Мы записываем ответы локально, параллельно отправляя на бек информацию о ответах
|
||||||
const answers = useQuizViewStore((state) => state.answers);
|
const answers = useQuizViewStore((state) => state.answers);
|
||||||
|
|
||||||
@ -29,9 +24,6 @@ export function useAIQuiz() {
|
|||||||
const yandexMetrics = useYandexMetricsGoals(settings.cfg.yandexMetricsNumber);
|
const yandexMetrics = useYandexMetricsGoals(settings.cfg.yandexMetricsNumber);
|
||||||
|
|
||||||
const currentQuestion = useMemo(() => {
|
const currentQuestion = useMemo(() => {
|
||||||
console.log("выбор currentQuestion");
|
|
||||||
console.log("quizStep ", quizStep);
|
|
||||||
console.log("questions[quizStep] ", questions[quizStep]);
|
|
||||||
const calcQuestion = questions[quizStep];
|
const calcQuestion = questions[quizStep];
|
||||||
if (calcQuestion) {
|
if (calcQuestion) {
|
||||||
vkMetrics.questionPassed(calcQuestion.id);
|
vkMetrics.questionPassed(calcQuestion.id);
|
||||||
@ -44,8 +36,6 @@ export function useAIQuiz() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (currentQuestion.type === "result") showResult();
|
if (currentQuestion.type === "result") showResult();
|
||||||
if (currentQuestion) changeNextLoading(false);
|
if (currentQuestion) changeNextLoading(false);
|
||||||
console.log("questions");
|
|
||||||
console.log(questions);
|
|
||||||
}, [currentQuestion, questions]);
|
}, [currentQuestion, questions]);
|
||||||
|
|
||||||
//Показать визуалом юзеру результат
|
//Показать визуалом юзеру результат
|
||||||
|
@ -14,12 +14,6 @@ export function useBranchingQuiz() {
|
|||||||
//Получаем инфо о квизе и список вопросов.
|
//Получаем инфо о квизе и список вопросов.
|
||||||
const { settings, questions, quizId, cnt } = useQuizStore();
|
const { settings, questions, quizId, cnt } = useQuizStore();
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log("useQuestionFlowControl useEffect");
|
|
||||||
console.log(questions);
|
|
||||||
}, [questions]);
|
|
||||||
console.log(questions);
|
|
||||||
|
|
||||||
//Когда квиз линейный, не ветвящийся, мы идём по вопросам по их порядковому номеру. Это их page.
|
//Когда квиз линейный, не ветвящийся, мы идём по вопросам по их порядковому номеру. Это их page.
|
||||||
//За корректность page отвечает конструктор квизов. Интересный факт, если в конструкторе удалить из середины вопрос, то случится куча запросов изменения вопросов с изменением этого page
|
//За корректность page отвечает конструктор квизов. Интересный факт, если в конструкторе удалить из середины вопрос, то случится куча запросов изменения вопросов с изменением этого page
|
||||||
const sortedQuestions = useMemo(() => {
|
const sortedQuestions = useMemo(() => {
|
||||||
@ -237,9 +231,6 @@ export function useBranchingQuiz() {
|
|||||||
return hasAnswer;
|
return hasAnswer;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(linearQuestionIndex);
|
|
||||||
console.log(questions.length);
|
|
||||||
console.log(cnt);
|
|
||||||
if (linearQuestionIndex !== null && questions.length < cnt) return true;
|
if (linearQuestionIndex !== null && questions.length < cnt) return true;
|
||||||
return Boolean(nextQuestion);
|
return Boolean(nextQuestion);
|
||||||
}, [answers, currentQuestion, nextQuestion]);
|
}, [answers, currentQuestion, nextQuestion]);
|
||||||
|
@ -14,12 +14,6 @@ export function useLinearQuiz() {
|
|||||||
//Получаем инфо о квизе и список вопросов.
|
//Получаем инфо о квизе и список вопросов.
|
||||||
const { settings, questions, quizId, cnt } = useQuizStore();
|
const { settings, questions, quizId, cnt } = useQuizStore();
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log("useQuestionFlowControl useEffect");
|
|
||||||
console.log(questions);
|
|
||||||
}, [questions]);
|
|
||||||
console.log(questions);
|
|
||||||
|
|
||||||
//Когда квиз линейный, не ветвящийся, мы идём по вопросам по их порядковому номеру. Это их page.
|
//Когда квиз линейный, не ветвящийся, мы идём по вопросам по их порядковому номеру. Это их page.
|
||||||
//За корректность page отвечает конструктор квизов. Интересный факт, если в конструкторе удалить из середины вопрос, то случится куча запросов изменения вопросов с изменением этого page
|
//За корректность page отвечает конструктор квизов. Интересный факт, если в конструкторе удалить из середины вопрос, то случится куча запросов изменения вопросов с изменением этого page
|
||||||
const sortedQuestions = useMemo(() => {
|
const sortedQuestions = useMemo(() => {
|
||||||
@ -237,9 +231,6 @@ export function useLinearQuiz() {
|
|||||||
return hasAnswer;
|
return hasAnswer;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(linearQuestionIndex);
|
|
||||||
console.log(questions.length);
|
|
||||||
console.log(cnt);
|
|
||||||
if (linearQuestionIndex !== null && questions.length < cnt) return true;
|
if (linearQuestionIndex !== null && questions.length < cnt) return true;
|
||||||
return Boolean(nextQuestion);
|
return Boolean(nextQuestion);
|
||||||
}, [answers, currentQuestion, nextQuestion]);
|
}, [answers, currentQuestion, nextQuestion]);
|
||||||
|
@ -2,23 +2,15 @@ import { Box } from "@mui/material";
|
|||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import QuizAnswerer from "../lib/components/QuizAnswerer";
|
import QuizAnswerer from "../lib/components/QuizAnswerer";
|
||||||
|
|
||||||
console.log("🚀 App: Component module loaded");
|
|
||||||
|
|
||||||
// const defaultQuizId = "45ef7f9c-784d-4e58-badb-f6b337f08ba0"; // branching
|
// const defaultQuizId = "45ef7f9c-784d-4e58-badb-f6b337f08ba0"; // branching
|
||||||
// const defaultQuizId = "b7dafa46-a535-4beb-b289-65253d14a951"; //looooong header
|
// const defaultQuizId = "b7dafa46-a535-4beb-b289-65253d14a951"; //looooong header
|
||||||
const defaultQuizId = "3c49550d-8c77-4788-bc2d-42586a261514"; //тест визуала
|
const defaultQuizId = "3c49550d-8c77-4788-bc2d-42586a261514"; //тест визуала
|
||||||
// const defaultQuizId = "ad7f5a87-b833-4f5b-854e-453706ed655c"; // linear
|
// const defaultQuizId = "ad7f5a87-b833-4f5b-854e-453706ed655c"; // linear
|
||||||
|
|
||||||
export default function App() {
|
export default function App() {
|
||||||
console.log("🔧 App: Component function called");
|
|
||||||
|
|
||||||
const quizId = useParams().quizId || "";
|
const quizId = useParams().quizId || "";
|
||||||
const currentUrl = window.location.pathname.slice(1);
|
const currentUrl = window.location.pathname.slice(1);
|
||||||
|
|
||||||
console.log("🔍 App: quizId from params:", quizId);
|
|
||||||
console.log("🔍 App: currentUrl:", currentUrl);
|
|
||||||
console.log("🔍 App: final quizId:", quizId || currentUrl || "");
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
|
@ -2,10 +2,6 @@ import i18n from "i18next";
|
|||||||
import { initReactI18next } from "react-i18next";
|
import { initReactI18next } from "react-i18next";
|
||||||
import Backend from "i18next-http-backend";
|
import Backend from "i18next-http-backend";
|
||||||
|
|
||||||
console.log("🚀 Main i18n: Starting main i18n initialization...");
|
|
||||||
console.log("🔍 Main i18n: i18next instance before init:", i18n);
|
|
||||||
console.log("🔍 Main i18n: i18next isInitialized before init:", i18n.isInitialized);
|
|
||||||
|
|
||||||
// 1. Функция для принудительного определения языка из URL
|
// 1. Функция для принудительного определения языка из URL
|
||||||
const getLanguageFromURL = (): string => {
|
const getLanguageFromURL = (): string => {
|
||||||
const path = window.location.pathname;
|
const path = window.location.pathname;
|
||||||
@ -15,11 +11,9 @@ const getLanguageFromURL = (): string => {
|
|||||||
|
|
||||||
if (langMatch) {
|
if (langMatch) {
|
||||||
const detectedLang = langMatch[1].toLowerCase();
|
const detectedLang = langMatch[1].toLowerCase();
|
||||||
console.log("🔍 Main i18n: Detected language from URL:", detectedLang, "path:", path);
|
|
||||||
return detectedLang;
|
return detectedLang;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('🔍 Main i18n: Language not specified in URL, using "ru"');
|
|
||||||
return "ru"; // Жёсткий фолбэк
|
return "ru"; // Жёсткий фолбэк
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -63,13 +57,6 @@ i18n
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then(() => {
|
|
||||||
console.log("✅ Main i18n: Initialization completed successfully");
|
|
||||||
console.log("🔍 Main i18n: Current language:", i18n.language);
|
|
||||||
console.log("🔍 Main i18n: Loading translations from:", `/locales/${i18n.language}.json`);
|
|
||||||
console.log("🔍 Main i18n: i18n.isInitialized:", i18n.isInitialized);
|
|
||||||
console.log("🔍 Main i18n: i18n.store.data:", i18n.store.data);
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error("❌ Main i18n: Initialization failed:", err);
|
console.error("❌ Main i18n: Initialization failed:", err);
|
||||||
});
|
});
|
||||||
|
@ -6,7 +6,6 @@ const getLanguageFromURL = (): string => {
|
|||||||
const path = window.location.pathname;
|
const path = window.location.pathname;
|
||||||
const langMatch = path.match(/^\/(en|ru|uz)(\/|$)/i);
|
const langMatch = path.match(/^\/(en|ru|uz)(\/|$)/i);
|
||||||
const detectedLang = langMatch ? langMatch[1].toLowerCase() : "ru"; // Фолбэк на 'ru'
|
const detectedLang = langMatch ? langMatch[1].toLowerCase() : "ru"; // Фолбэк на 'ru'
|
||||||
console.log("🔍 Widget i18n: Detected language from URL:", detectedLang, "path:", path);
|
|
||||||
return detectedLang;
|
return detectedLang;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -207,14 +206,8 @@ const r = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log("🚀 Widget i18n: Starting initialization...");
|
|
||||||
console.log("🔍 Widget i18n: i18next instance before init:", i18n);
|
|
||||||
console.log("🔍 Widget i18n: i18next isInitialized before init:", i18n.isInitialized);
|
|
||||||
|
|
||||||
// Проверяем, не инициализирован ли уже i18n
|
// Проверяем, не инициализирован ли уже i18n
|
||||||
if (i18n.isInitialized) {
|
if (i18n.isInitialized) {
|
||||||
console.log("⚠️ Widget i18n: i18n already initialized, adding resources to existing instance");
|
|
||||||
|
|
||||||
// Добавляем ресурсы к существующему экземпляру
|
// Добавляем ресурсы к существующему экземпляру
|
||||||
(Object.keys(r) as Array<"ru" | "en" | "uz">).forEach((lng) => {
|
(Object.keys(r) as Array<"ru" | "en" | "uz">).forEach((lng) => {
|
||||||
if (i18n.store.data[lng] && i18n.store.data[lng].translation) {
|
if (i18n.store.data[lng] && i18n.store.data[lng].translation) {
|
||||||
@ -231,13 +224,6 @@ if (i18n.isInitialized) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("✅ Widget i18n: Resources added to existing i18n instance");
|
|
||||||
console.log("🔍 Widget i18n: Testing translations after adding resources:");
|
|
||||||
console.log("🔍 Widget i18n: t('Step'):", i18n.t("Step"));
|
|
||||||
console.log("🔍 Widget i18n: t('of'):", i18n.t("of"));
|
|
||||||
console.log("🔍 Widget i18n: t('Prev'):", i18n.t("Prev"));
|
|
||||||
console.log("🔍 Widget i18n: t('Next'):", i18n.t("Next"));
|
|
||||||
} else {
|
} else {
|
||||||
// 3. Конфигурация i18n без Backend
|
// 3. Конфигурация i18n без Backend
|
||||||
i18n
|
i18n
|
||||||
@ -272,31 +258,6 @@ if (i18n.isInitialized) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then(() => {
|
|
||||||
console.log("✅ Widget i18n: Initialization completed successfully");
|
|
||||||
console.log("🔍 Widget i18n: Current language:", i18n.language);
|
|
||||||
console.log("🔍 Widget i18n: Available languages:", i18n.languages);
|
|
||||||
console.log("🔍 Widget i18n: Available keys for ru:", Object.keys(r.ru.translation));
|
|
||||||
console.log("🔍 Widget i18n: Available keys for en:", Object.keys(r.en.translation));
|
|
||||||
console.log("🔍 Widget i18n: Available keys for uz:", Object.keys(r.uz.translation));
|
|
||||||
console.log("🔍 Widget i18n: Looking for keys: Step, of, Prev, Next");
|
|
||||||
console.log("🔍 Widget i18n: Step in ru:", r.ru.translation.Step);
|
|
||||||
console.log("🔍 Widget i18n: of in ru:", r.ru.translation.of);
|
|
||||||
console.log("🔍 Widget i18n: Prev in ru:", r.ru.translation.Prev);
|
|
||||||
console.log("🔍 Widget i18n: Next in ru:", r.ru.translation.Next);
|
|
||||||
|
|
||||||
// Проверяем, что ключи доступны через i18n
|
|
||||||
console.log("🔍 Widget i18n: Testing translations through i18n:");
|
|
||||||
console.log("🔍 Widget i18n: t('Step'):", i18n.t("Step"));
|
|
||||||
console.log("🔍 Widget i18n: t('of'):", i18n.t("of"));
|
|
||||||
console.log("🔍 Widget i18n: t('Prev'):", i18n.t("Prev"));
|
|
||||||
console.log("🔍 Widget i18n: t('Next'):", i18n.t("Next"));
|
|
||||||
|
|
||||||
// Проверяем состояние i18n
|
|
||||||
console.log("🔍 Widget i18n: i18n.isInitialized:", i18n.isInitialized);
|
|
||||||
console.log("🔍 Widget i18n: i18n.store.data:", i18n.store.data);
|
|
||||||
console.log("🔍 Widget i18n: i18n.store.options:", i18n.store.options);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error("❌ Widget i18n: Initialization failed:", error);
|
console.error("❌ Widget i18n: Initialization failed:", error);
|
||||||
});
|
});
|
||||||
|
@ -3,13 +3,8 @@ import { RouteObject, RouterProvider, createBrowserRouter } from "react-router-d
|
|||||||
import App from "./App";
|
import App from "./App";
|
||||||
import { StrictMode, lazy } from "react";
|
import { StrictMode, lazy } from "react";
|
||||||
|
|
||||||
console.log("🚀 Main: Starting main application...");
|
|
||||||
console.log("🔍 Main: About to import main i18n...");
|
|
||||||
|
|
||||||
import "./i18n/i18n";
|
import "./i18n/i18n";
|
||||||
|
|
||||||
console.log("✅ Main: Main i18n imported successfully");
|
|
||||||
|
|
||||||
const routes: RouteObject[] = [
|
const routes: RouteObject[] = [
|
||||||
{
|
{
|
||||||
path: "/",
|
path: "/",
|
||||||
@ -44,12 +39,8 @@ const router = createBrowserRouter(routes);
|
|||||||
|
|
||||||
const root = createRoot(document.getElementById("root")!);
|
const root = createRoot(document.getElementById("root")!);
|
||||||
|
|
||||||
console.log("🔧 Main: About to render application...");
|
|
||||||
|
|
||||||
root.render(
|
root.render(
|
||||||
<StrictMode>
|
<StrictMode>
|
||||||
<RouterProvider router={router} />
|
<RouterProvider router={router} />
|
||||||
</StrictMode>
|
</StrictMode>
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log("✅ Main: Application rendered successfully");
|
|
||||||
|
@ -3,13 +3,8 @@ import { createRoot } from "react-dom/client";
|
|||||||
// eslint-disable-next-line react-refresh/only-export-components
|
// eslint-disable-next-line react-refresh/only-export-components
|
||||||
export * from "./widgets";
|
export * from "./widgets";
|
||||||
|
|
||||||
console.log("🚀 Widget: Starting widget initialization...");
|
|
||||||
console.log("🔍 Widget: About to import i18nWidget...");
|
|
||||||
|
|
||||||
import "./i18n/i18nWidget";
|
import "./i18n/i18nWidget";
|
||||||
|
|
||||||
console.log("✅ Widget: i18nWidget imported successfully");
|
|
||||||
|
|
||||||
// old widget
|
// old widget
|
||||||
const widget = {
|
const widget = {
|
||||||
create({
|
create({
|
||||||
@ -21,18 +16,14 @@ const widget = {
|
|||||||
quizId: string;
|
quizId: string;
|
||||||
changeFaviconAndTitle: boolean;
|
changeFaviconAndTitle: boolean;
|
||||||
}) {
|
}) {
|
||||||
console.log("🔧 Widget: create() called with:", { selector, quizId, changeFaviconAndTitle });
|
|
||||||
|
|
||||||
const element = document.getElementById(selector);
|
const element = document.getElementById(selector);
|
||||||
if (!element) {
|
if (!element) {
|
||||||
console.error("❌ Widget: Element for widget doesn't exist:", selector);
|
console.error("❌ Widget: Element for widget doesn't exist:", selector);
|
||||||
throw new Error("Element for widget doesn't exist");
|
throw new Error("Element for widget doesn't exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("✅ Widget: Element found, creating root...");
|
|
||||||
const root = createRoot(element);
|
const root = createRoot(element);
|
||||||
|
|
||||||
console.log("🔧 Widget: Rendering QuizAnswerer component...");
|
|
||||||
root.render(
|
root.render(
|
||||||
<QuizAnswerer
|
<QuizAnswerer
|
||||||
quizId={quizId}
|
quizId={quizId}
|
||||||
@ -40,10 +31,7 @@ const widget = {
|
|||||||
disableGlobalCss
|
disableGlobalCss
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
console.log("✅ Widget: QuizAnswerer component rendered successfully");
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log("✅ Widget: Widget object created and exported");
|
|
||||||
|
|
||||||
export default widget;
|
export default widget;
|
||||||
|
Loading…
Reference in New Issue
Block a user