diff --git a/VERSION b/VERSION index 3c43d71..4b20d97 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.4.7 +6.4.8 diff --git a/play-life-web/package.json b/play-life-web/package.json index 15cf321..15588d6 100644 --- a/play-life-web/package.json +++ b/play-life-web/package.json @@ -1,6 +1,6 @@ { "name": "play-life-web", - "version": "6.4.7", + "version": "6.4.8", "type": "module", "scripts": { "dev": "vite", diff --git a/play-life-web/src/App.jsx b/play-life-web/src/App.jsx index ff29360..4d2f98e 100644 --- a/play-life-web/src/App.jsx +++ b/play-life-web/src/App.jsx @@ -355,7 +355,7 @@ function AppContent() { }, []) // Функция для обновления URL (только для глубоких табов) - const updateUrl = useCallback((tab, params = {}, previousTab = null) => { + const updateUrl = useCallback((tab, params = {}, previousTab = null, replace = false) => { if (!deepTabs.includes(tab)) { // Для основных табов не обновляем URL return @@ -386,7 +386,11 @@ function AppContent() { } // Сохраняем предыдущий таб в state для восстановления при "Назад" - window.history.pushState({ tab, params, previousTab }, '', url) + if (replace) { + window.history.replaceState({ tab, params, previousTab }, '', url) + } else { + window.history.pushState({ tab, params, previousTab }, '', url) + } }, []) // deepTabs - константа, не нужно в зависимостях // Функция для очистки URL (при возврате к основному табу) @@ -882,7 +886,7 @@ function AppContent() { setActiveTab('full') } - const handleTabChange = (tab, params = {}) => { + const handleTabChange = (tab, params = {}, options = {}) => { if (tab === 'full' && activeTab === 'full') { // При повторном клике на "Полная статистика" сбрасываем выбранный проект setSelectedProject(null) @@ -941,7 +945,7 @@ function AppContent() { window.history.replaceState({ tab, params, previousTab: activeTab }, '', url) } else { // Сохраняем текущий таб как предыдущий при переходе на глубокий таб - updateUrl(tab, params, activeTab) + updateUrl(tab, params, activeTab, options.replace) } } else if (isNewTabMain && isCurrentTabDeep) { // При переходе с глубокого таба на основной - очищаем URL и сохраняем таб в state @@ -1030,8 +1034,8 @@ function AppContent() { } // Обработчик навигации для компонентов - const handleNavigate = (tab, params = {}) => { - handleTabChange(tab, params) + const handleNavigate = (tab, params = {}, options = {}) => { + handleTabChange(tab, params, options) } // Загружаем данные при открытии таба (когда таб становится активным) diff --git a/play-life-web/src/components/WordList.jsx b/play-life-web/src/components/WordList.jsx index 520176f..495f15c 100644 --- a/play-life-web/src/components/WordList.jsx +++ b/play-life-web/src/components/WordList.jsx @@ -187,8 +187,8 @@ function WordList({ onNavigate, dictionaryId, isNewDictionary, refreshTrigger = await fetchDictionary(newDictionaryId) await fetchWordsForDictionary(newDictionaryId) - // Update navigation to use the new dictionary ID and name - onNavigate?.('words', { dictionaryId: newDictionaryId, dictionaryName: newDict.name }) + // Update navigation to use the new dictionary ID and name (replace history entry so back goes to dictionaries) + onNavigate?.('words', { dictionaryId: newDictionaryId, dictionaryName: newDict.name }, { replace: true }) } else if (hasValidDictionary(currentDictionaryId)) { // Update existing dictionary (rename) const response = await authFetch(`${API_URL}/dictionaries/${currentDictionaryId}`, {