6.3.4: Сброс на current при рестарте PWA
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m8s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m8s
This commit is contained in:
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"claudeCode.allowDangerouslySkipPermissions": true
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "play-life-web",
|
||||
"version": "6.3.3",
|
||||
"version": "6.3.4",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user