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 => {