6.3.4: Сброс на current при рестарте PWA
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m8s

This commit is contained in:
poignatov
2026-03-08 12:41:25 +03:00
parent f54a0fff14
commit e1b6fcb918
4 changed files with 28 additions and 20 deletions

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"claudeCode.allowDangerouslySkipPermissions": true
}

View File

@@ -1 +1 @@
6.3.3
6.3.4

View File

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

View File

@@ -242,8 +242,8 @@ function AppContent() {
const tabFromUrl = urlParams.get('tab')
const validTabs = ['current', 'priorities', 'full', 'words', 'add-words', 'dictionaries', 'test', 'tasks', 'task-form', 'wishlist', 'wishlist-form', 'wishlist-detail', 'board-form', 'board-join', 'profile', 'todoist-integration', 'telegram-integration', 'fitbit-integration', 'tracking', 'tracking-access', 'tracking-invite']
if (tabFromUrl && validTabs.includes(tabFromUrl) && deepTabs.includes(tabFromUrl)) {
// Восстанавливаем параметры из URL
if (tabFromUrl && validTabs.includes(tabFromUrl) && deepTabs.includes(tabFromUrl) && window.history.length > 1) {
// Восстанавливаем глубокий таб из URL только если есть история (не рестарт PWA)
const params = {}
urlParams.forEach((value, key) => {
if (key !== 'tab') {
@@ -256,20 +256,24 @@ function AppContent() {
})
const deepTabUrl = window.location.pathname + window.location.search
ensureBaseHistory(tabFromUrl, params, deepTabUrl)
// Если в URL есть глубокий таб, восстанавливаем его
setActiveTab(tabFromUrl)
setLoadedTabs(prev => ({ ...prev, [tabFromUrl]: true }))
if (Object.keys(params).length > 0) {
setTabParams(params)
// Если это экран full с selectedProject, восстанавливаем его
if (tabFromUrl === 'full' && params.selectedProject) {
setSelectedProject(params.selectedProject)
}
}
} else {
// Если в URL нет глубокого таба, проверяем localStorage для основного таба
// При рестарте PWA (history.length <= 1) с deep tab в URL — сбрасываем на current
if (tabFromUrl && deepTabs.includes(tabFromUrl) && window.history.length <= 1) {
window.history.replaceState({ tab: 'current' }, '', '/')
setActiveTab('current')
setLoadedTabs(prev => ({ ...prev, 'current': true }))
} else {
// Проверяем localStorage для основного таба
const savedTab = window.localStorage?.getItem('activeTab')
if (savedTab && validTabs.includes(savedTab)) {
if (savedTab && validTabs.includes(savedTab) && mainTabs.includes(savedTab)) {
setActiveTab(savedTab)
setLoadedTabs(prev => ({ ...prev, [savedTab]: true }))
}
@@ -283,6 +287,7 @@ function AppContent() {
window.history.replaceState({}, '', url)
}
}
}
setIsInitialized(true)
} catch (err) {
console.warn('Не удалось прочитать активный таб', err)