统一账号作用域 Key 对齐 Android,新增缓存 schema 迁移清理旧数据,并同步更新相关模块与单元测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.6 KiB
Swift
50 lines
1.6 KiB
Swift
//
|
||
// AppStore.swift
|
||
// suixinkan
|
||
//
|
||
|
||
import Foundation
|
||
|
||
/// 应用本地存储统一入口,负责组装各功能模块并协调退出登录清理。
|
||
final class AppStore {
|
||
|
||
/// 全局应用存储。
|
||
static let shared = AppStore()
|
||
|
||
/// 登录会话与当前账号存储。
|
||
let session: AppSessionStore
|
||
|
||
/// 角色权限与首页权限缓存。
|
||
let permissions: AppPermissionStore
|
||
|
||
/// 位置上报会话存储。
|
||
let location: AppLocationStore
|
||
|
||
/// 收款功能偏好存储。
|
||
let payment: AppPaymentStore
|
||
|
||
/// 景区排队功能存储。
|
||
let scenicQueue: AppScenicQueueStore
|
||
|
||
/// 使用指定 UserDefaults 创建模块化应用存储。
|
||
init(defaults: UserDefaults = .standard) {
|
||
AppStoreCacheMigrator.migrateIfNeeded(defaults: defaults)
|
||
let session = AppSessionStore(defaults: defaults)
|
||
self.session = session
|
||
permissions = AppPermissionStore(defaults: defaults, session: session)
|
||
location = AppLocationStore(defaults: defaults, session: session)
|
||
payment = AppPaymentStore(defaults: defaults, session: session)
|
||
scenicQueue = AppScenicQueueStore(defaults: defaults, session: session)
|
||
}
|
||
|
||
/// 清除当前账号业务快照与登录态,保留隐私授权和上次登录用户名。
|
||
func logout() {
|
||
let accountScope = session.accountCachePrefix
|
||
permissions.clear(accountScope: accountScope)
|
||
location.clear(accountScope: accountScope)
|
||
payment.clear(accountScope: accountScope)
|
||
scenicQueue.clear(accountScope: accountScope)
|
||
session.clearAuthenticatedSession(accountScope: accountScope)
|
||
}
|
||
}
|