From cc6b5d10addc1968a5b58bd2efd3e2878418ab8f Mon Sep 17 00:00:00 2001 From: dosai Date: Sat, 1 Nov 2025 20:22:37 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20chat=5Fid=20=D0=B8=D0=B7=20URL=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D1=8D=D0=BA=D1=81=D0=BF=D0=BE=D1=80=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components/CalculatorNav.tsx | 17 +++++++++++++- frontend/components/DynamicCalculator.tsx | 28 ++++++++++++++++++++--- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/frontend/components/CalculatorNav.tsx b/frontend/components/CalculatorNav.tsx index 605f0fc..000acee 100644 --- a/frontend/components/CalculatorNav.tsx +++ b/frontend/components/CalculatorNav.tsx @@ -3,12 +3,27 @@ 'use client'; +import { useState, useEffect } from 'react'; import { usePathname, useSearchParams } from 'next/navigation'; export default function CalculatorNav() { const pathname = usePathname(); const searchParams = useSearchParams(); - const chatId = searchParams.get('chat_id'); + + // Получаем chat_id из разных источников (для статического экспорта) + const chatIdFromParams = searchParams.get('chat_id'); + const [chatId, setChatId] = useState(chatIdFromParams); + + useEffect(() => { + // Проверяем URL напрямую (для статического экспорта) + if (typeof window !== 'undefined') { + const params = new URLSearchParams(window.location.search); + const id = params.get('chat_id'); + if (id) { + setChatId(id); + } + } + }, [pathname]); // Сохраняем chat_id при переходах const queryString = chatId ? `?chat_id=${chatId}` : ''; diff --git a/frontend/components/DynamicCalculator.tsx b/frontend/components/DynamicCalculator.tsx index 184751b..f8dae88 100644 --- a/frontend/components/DynamicCalculator.tsx +++ b/frontend/components/DynamicCalculator.tsx @@ -56,14 +56,36 @@ export default function DynamicCalculator({ calculatorType }: DynamicCalculatorP setFormData(initialData); }, [calculator]); - // Получаем chat_id из URL + // Получаем chat_id из URL (для статического экспорта используем window.location) useEffect(() => { + if (typeof window === 'undefined') return; + + // Получаем chat_id из query параметров URL const params = new URLSearchParams(window.location.search); - const id = params.get('chat_id'); + let id = params.get('chat_id'); + + // Если не найден в search params, проверяем hash + if (!id && window.location.hash) { + const hashParams = new URLSearchParams(window.location.hash.replace('#', '')); + id = hashParams.get('chat_id'); + } + if (id) { setChatId(id); } - }, []); + + // Также слушаем изменения URL (для навигации через кнопки) + const handleLocationChange = () => { + const newParams = new URLSearchParams(window.location.search); + const newId = newParams.get('chat_id'); + if (newId && newId !== chatId) { + setChatId(newId); + } + }; + + // Проверяем при монтировании и при изменении calculatorType + handleLocationChange(); + }, [calculatorType]); // Преобразование строки в число const toNum = (str: string): number => {