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