fix: Улучшено получение chat_id из URL для статического экспорта

This commit is contained in:
dosai 2025-11-01 20:22:37 +03:00
parent bcf1ffbfe2
commit cc6b5d10ad
2 changed files with 41 additions and 4 deletions

View File

@ -3,12 +3,27 @@
'use client'; 'use client';
import { useState, useEffect } from 'react';
import { usePathname, useSearchParams } from 'next/navigation'; import { usePathname, useSearchParams } from 'next/navigation';
export default function CalculatorNav() { export default function CalculatorNav() {
const pathname = usePathname(); const pathname = usePathname();
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const chatId = searchParams.get('chat_id');
// Получаем chat_id из разных источников (для статического экспорта)
const chatIdFromParams = searchParams.get('chat_id');
const [chatId, setChatId] = useState<string | null>(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 при переходах // Сохраняем chat_id при переходах
const queryString = chatId ? `?chat_id=${chatId}` : ''; const queryString = chatId ? `?chat_id=${chatId}` : '';

View File

@ -56,14 +56,36 @@ export default function DynamicCalculator({ calculatorType }: DynamicCalculatorP
setFormData(initialData); setFormData(initialData);
}, [calculator]); }, [calculator]);
// Получаем chat_id из URL // Получаем chat_id из URL (для статического экспорта используем window.location)
useEffect(() => { useEffect(() => {
if (typeof window === 'undefined') return;
// Получаем chat_id из query параметров URL
const params = new URLSearchParams(window.location.search); 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) { if (id) {
setChatId(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 => { const toNum = (str: string): number => {