fix: Улучшено получение chat_id из URL для статического экспорта
This commit is contained in:
parent
bcf1ffbfe2
commit
cc6b5d10ad
@ -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}` : '';
|
||||||
|
|||||||
@ -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 => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user