refactor: 前端本地偏好统一为公共存储层
- 新增 frontend/src/utils/storageKeys.ts 集中维护存储键常量并登记旧键迁移 - 新增 frontend/src/utils/storage.ts 统一 localStorage/sessionStorage 读写与异常容错 - 新增 frontend/src/composables/usePreference.ts 提供 useStringPreference 响应式字符串偏好 - 新增 frontend/src/utils/transactionFilterPrefs.ts 抽出收支筛选偏好字段定义与共享读写 - 存储键统一以 finance. 前缀命名,locale、emailBill.tab、logs.tab 迁移到新键并自动迁移旧值 - 各页面与组件改用公共层,移除重复的 try/catch 与跨组件重复的序列化逻辑 - 认证凭据 token 属登录状态,保持原键名不纳入 finance. 前缀
This commit is contained in:
@@ -3,6 +3,8 @@ import { createRouter, createWebHistory } from 'vue-router'
|
||||
import { useUserStore } from '../store/user'
|
||||
import { useDatabaseStore } from '../store/database'
|
||||
import { useRegistrationStore } from '../store/registration'
|
||||
import { migrateKey, readString } from '../utils/storage'
|
||||
import { LEGACY_STORAGE_KEYS, STORAGE_KEYS } from '../utils/storageKeys'
|
||||
|
||||
// 创建路由实例,使用 HTML5 History 模式
|
||||
const router = createRouter({
|
||||
@@ -68,7 +70,9 @@ const router = createRouter({
|
||||
// 跳转到上次访问的标签页,无记录时默认邮箱配置
|
||||
redirect: () => {
|
||||
const tabs = ['configs', 'senderRules', 'messages']
|
||||
const saved = typeof localStorage !== 'undefined' ? localStorage.getItem('emailBill.tab') : null
|
||||
// 读取前迁移旧键,保证老用户标签页偏好不丢失
|
||||
migrateKey(LEGACY_STORAGE_KEYS.emailBillTab, STORAGE_KEYS.emailBillTab)
|
||||
const saved = readString(STORAGE_KEYS.emailBillTab) || null
|
||||
return `/email-bills/${saved && tabs.includes(saved) ? saved : 'configs'}`
|
||||
},
|
||||
},
|
||||
@@ -92,7 +96,9 @@ const router = createRouter({
|
||||
// 跳转到上次访问的日志标签页,无记录时默认访问日志
|
||||
redirect: () => {
|
||||
const tabs = ['http', 'login', 'app']
|
||||
const saved = typeof localStorage !== 'undefined' ? localStorage.getItem('logs.tab') : null
|
||||
// 读取前迁移旧键,保证老用户标签页偏好不丢失
|
||||
migrateKey(LEGACY_STORAGE_KEYS.logsTab, STORAGE_KEYS.logsTab)
|
||||
const saved = readString(STORAGE_KEYS.logsTab) || null
|
||||
return `/logs/${saved && tabs.includes(saved) ? saved : 'http'}`
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user