diff --git a/lib/api/hooks.ts b/lib/api/hooks.ts index 61c645a..5020d78 100644 --- a/lib/api/hooks.ts +++ b/lib/api/hooks.ts @@ -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); } diff --git a/lib/api/quizRelase.ts b/lib/api/quizRelase.ts index 1101644..66cdbb0 100644 --- a/lib/api/quizRelase.ts +++ b/lib/api/quizRelase.ts @@ -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 }) diff --git a/lib/components/QuizAnswerer.tsx b/lib/components/QuizAnswerer.tsx index de57c47..4722376 100644 --- a/lib/components/QuizAnswerer.tsx +++ b/lib/components/QuizAnswerer.tsx @@ -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(() => window.innerWidth); const rootContainerRef = useRef(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 ; } - console.log("error"); - console.log(error); if (error) { - console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to error"); return ; } if (Object.keys(settings).length == 0) { - console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to empty settings"); return ; } if (questions.length === 0) { - console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to no questions"); return ; } if (questions.length === 1 && settings.cfg.noStartPage && statusOfQuiz != "ai") { - console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to quiz is empty"); return ; } if (!quizId) { - console.log("🔍 QuizAnswererInner: Rendering ApologyPage due to no quiz id"); return ; } - console.log("🔍 QuizAnswererInner: Rendering main quiz container"); - const quizContainer = ( ; 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 ( { 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 ( 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 ( 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 = ; break; } case "question": { if (currentQuestion.type === "result") { - console.log("🔍 ViewPublicationPage: Rendering result form"); quizStepElement = ; break; } - console.log("🔍 ViewPublicationPage: Rendering question"); quizStepElement = ( { 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); diff --git a/lib/components/ViewPublicationPage/tools/NextButton.tsx b/lib/components/ViewPublicationPage/tools/NextButton.tsx index 1f9ff62..a582348 100644 --- a/lib/components/ViewPublicationPage/tools/NextButton.tsx +++ b/lib/components/ViewPublicationPage/tools/NextButton.tsx @@ -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 ? ( { - console.log(quizDataResponse); const readyData = { cnt: quizDataResponse.cnt, show_badge: quizDataResponse.show_badge, @@ -67,7 +66,6 @@ export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit(() => ({ })); 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[]) => diff --git a/lib/utils/handleComponentError.ts b/lib/utils/handleComponentError.ts index b914b51..7389ff2 100644 --- a/lib/utils/handleComponentError.ts +++ b/lib/utils/handleComponentError.ts @@ -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 = []; } diff --git a/lib/utils/hooks/FlowControlLogic/useAIQuiz.ts b/lib/utils/hooks/FlowControlLogic/useAIQuiz.ts index 8797057..02b4d23 100644 --- a/lib/utils/hooks/FlowControlLogic/useAIQuiz.ts +++ b/lib/utils/hooks/FlowControlLogic/useAIQuiz.ts @@ -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]); //Показать визуалом юзеру результат diff --git a/lib/utils/hooks/FlowControlLogic/useBranchingQuiz.ts b/lib/utils/hooks/FlowControlLogic/useBranchingQuiz.ts index bc750cf..93b7bbe 100644 --- a/lib/utils/hooks/FlowControlLogic/useBranchingQuiz.ts +++ b/lib/utils/hooks/FlowControlLogic/useBranchingQuiz.ts @@ -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]); diff --git a/lib/utils/hooks/FlowControlLogic/useLinearQuiz.ts b/lib/utils/hooks/FlowControlLogic/useLinearQuiz.ts index 119b3a9..70f7a27 100644 --- a/lib/utils/hooks/FlowControlLogic/useLinearQuiz.ts +++ b/lib/utils/hooks/FlowControlLogic/useLinearQuiz.ts @@ -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]); diff --git a/src/App.tsx b/src/App.tsx index d1ad024..05c8152 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -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 ( { 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); }); diff --git a/src/i18n/i18nWidget.ts b/src/i18n/i18nWidget.ts index 80fb2bc..50f581e 100644 --- a/src/i18n/i18nWidget.ts +++ b/src/i18n/i18nWidget.ts @@ -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); }); diff --git a/src/main.tsx b/src/main.tsx index ea5912d..5189338 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -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( ); - -console.log("✅ Main: Application rendered successfully"); diff --git a/src/widget.tsx b/src/widget.tsx index 79a827d..5c9dea0 100644 --- a/src/widget.tsx +++ b/src/widget.tsx @@ -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( ); - console.log("✅ Widget: QuizAnswerer component rendered successfully"); }, }; -console.log("✅ Widget: Widget object created and exported"); - export default widget;