6.4.8: Фикс кнопки назад при создании словаря
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m3s

This commit is contained in:
poignatov
2026-03-08 19:56:25 +03:00
parent 2ec5860d78
commit c911950cc1
4 changed files with 14 additions and 10 deletions

View File

@@ -1 +1 @@
6.4.7 6.4.8

View File

@@ -1,6 +1,6 @@
{ {
"name": "play-life-web", "name": "play-life-web",
"version": "6.4.7", "version": "6.4.8",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@@ -355,7 +355,7 @@ function AppContent() {
}, []) }, [])
// Функция для обновления URL (только для глубоких табов) // Функция для обновления URL (только для глубоких табов)
const updateUrl = useCallback((tab, params = {}, previousTab = null) => { const updateUrl = useCallback((tab, params = {}, previousTab = null, replace = false) => {
if (!deepTabs.includes(tab)) { if (!deepTabs.includes(tab)) {
// Для основных табов не обновляем URL // Для основных табов не обновляем URL
return return
@@ -386,7 +386,11 @@ function AppContent() {
} }
// Сохраняем предыдущий таб в state для восстановления при "Назад" // Сохраняем предыдущий таб в state для восстановления при "Назад"
if (replace) {
window.history.replaceState({ tab, params, previousTab }, '', url)
} else {
window.history.pushState({ tab, params, previousTab }, '', url) window.history.pushState({ tab, params, previousTab }, '', url)
}
}, []) // deepTabs - константа, не нужно в зависимостях }, []) // deepTabs - константа, не нужно в зависимостях
// Функция для очистки URL (при возврате к основному табу) // Функция для очистки URL (при возврате к основному табу)
@@ -882,7 +886,7 @@ function AppContent() {
setActiveTab('full') setActiveTab('full')
} }
const handleTabChange = (tab, params = {}) => { const handleTabChange = (tab, params = {}, options = {}) => {
if (tab === 'full' && activeTab === 'full') { if (tab === 'full' && activeTab === 'full') {
// При повторном клике на "Полная статистика" сбрасываем выбранный проект // При повторном клике на "Полная статистика" сбрасываем выбранный проект
setSelectedProject(null) setSelectedProject(null)
@@ -941,7 +945,7 @@ function AppContent() {
window.history.replaceState({ tab, params, previousTab: activeTab }, '', url) window.history.replaceState({ tab, params, previousTab: activeTab }, '', url)
} else { } else {
// Сохраняем текущий таб как предыдущий при переходе на глубокий таб // Сохраняем текущий таб как предыдущий при переходе на глубокий таб
updateUrl(tab, params, activeTab) updateUrl(tab, params, activeTab, options.replace)
} }
} else if (isNewTabMain && isCurrentTabDeep) { } else if (isNewTabMain && isCurrentTabDeep) {
// При переходе с глубокого таба на основной - очищаем URL и сохраняем таб в state // При переходе с глубокого таба на основной - очищаем URL и сохраняем таб в state
@@ -1030,8 +1034,8 @@ function AppContent() {
} }
// Обработчик навигации для компонентов // Обработчик навигации для компонентов
const handleNavigate = (tab, params = {}) => { const handleNavigate = (tab, params = {}, options = {}) => {
handleTabChange(tab, params) handleTabChange(tab, params, options)
} }
// Загружаем данные при открытии таба (когда таб становится активным) // Загружаем данные при открытии таба (когда таб становится активным)

View File

@@ -187,8 +187,8 @@ function WordList({ onNavigate, dictionaryId, isNewDictionary, refreshTrigger =
await fetchDictionary(newDictionaryId) await fetchDictionary(newDictionaryId)
await fetchWordsForDictionary(newDictionaryId) await fetchWordsForDictionary(newDictionaryId)
// Update navigation to use the new dictionary ID and 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 }) onNavigate?.('words', { dictionaryId: newDictionaryId, dictionaryName: newDict.name }, { replace: true })
} else if (hasValidDictionary(currentDictionaryId)) { } else if (hasValidDictionary(currentDictionaryId)) {
// Update existing dictionary (rename) // Update existing dictionary (rename)
const response = await authFetch(`${API_URL}/dictionaries/${currentDictionaryId}`, { const response = await authFetch(`${API_URL}/dictionaries/${currentDictionaryId}`, {