
- 在AppDelegate中集成数据迁移管理器,支持从UserDefaults迁移到Keychain。 - 重构UserInfoManager,使用Keychain存储用户信息,增加内存缓存以提升性能。 - 添加API加载效果视图,增强用户体验。 - 更新SplashFeature以支持自动登录和认证状态检查。 - 语言设置迁移至Keychain,确保用户设置的安全性。
73 lines
1.9 KiB
Swift
73 lines
1.9 KiB
Swift
import Foundation
|
||
|
||
// MARK: - API Loading State
|
||
|
||
/// API 加载状态枚举
|
||
enum APILoadingState: Equatable {
|
||
case loading // 正在加载
|
||
case error(message: String) // 加载失败,包含错误信息
|
||
case success // 加载成功
|
||
}
|
||
|
||
// MARK: - API Loading Item
|
||
|
||
/// 单个 API 加载项
|
||
struct APILoadingItem: Identifiable, Equatable {
|
||
let id: UUID
|
||
let state: APILoadingState
|
||
let shouldShowError: Bool // 是否显示错误信息
|
||
let shouldShowLoading: Bool // 是否显示loading动画
|
||
let createdAt: Date
|
||
|
||
init(id: UUID = UUID(), state: APILoadingState, shouldShowError: Bool = true, shouldShowLoading: Bool = true) {
|
||
self.id = id
|
||
self.state = state
|
||
self.shouldShowError = shouldShowError
|
||
self.shouldShowLoading = shouldShowLoading
|
||
self.createdAt = Date()
|
||
}
|
||
|
||
/// 是否应该显示此项目
|
||
var shouldDisplay: Bool {
|
||
switch state {
|
||
case .loading:
|
||
return shouldShowLoading
|
||
case .error:
|
||
return shouldShowError
|
||
case .success:
|
||
return false
|
||
}
|
||
}
|
||
|
||
/// 是否是错误状态
|
||
var isError: Bool {
|
||
if case .error = state {
|
||
return true
|
||
}
|
||
return false
|
||
}
|
||
|
||
/// 获取错误信息
|
||
var errorMessage: String? {
|
||
if case .error(let message) = state {
|
||
return message
|
||
}
|
||
return nil
|
||
}
|
||
}
|
||
|
||
// MARK: - API Loading Configuration
|
||
|
||
/// API Loading 配置
|
||
struct APILoadingConfiguration {
|
||
/// Loading 视图大小
|
||
static let loadingSize: CGFloat = 88
|
||
/// 背景透明度
|
||
static let backgroundAlpha: CGFloat = 0.6
|
||
/// 圆角大小
|
||
static let cornerRadius: CGFloat = 12
|
||
/// 错误信息显示时长(秒)
|
||
static let errorDisplayDuration: TimeInterval = 2.0
|
||
/// 动画时长
|
||
static let animationDuration: Double = 0.3
|
||
} |