feat: 添加腾讯云COS Token管理功能及相关视图更新
- 在APIEndpoints.swift中新增tcToken端点以支持腾讯云COS Token获取。 - 在APIModels.swift中新增TcTokenRequest和TcTokenResponse模型,处理Token请求和响应。 - 在COSManager.swift中实现Token的获取、缓存和过期管理逻辑,提升API请求的安全性。 - 在LanguageSettingsView中添加调试功能,允许测试COS Token获取。 - 在多个视图中更新状态管理和导航逻辑,确保用户体验一致性。 - 在FeedFeature和HomeFeature中优化状态管理,简化视图逻辑。
This commit is contained in:
@@ -20,6 +20,9 @@ struct LoginFeature {
|
||||
var ticketError: String?
|
||||
var loginStep: LoginStep = .initial
|
||||
|
||||
// 新增:初始化状态管理 - 防止重复执行
|
||||
var isInitialized = false
|
||||
|
||||
// 新增:任一登录方式完成时为 true
|
||||
var isAnyLoginCompleted: Bool {
|
||||
idLoginState.loginStep == .completed || emailLoginState.loginStep == .completed
|
||||
@@ -43,6 +46,7 @@ struct LoginFeature {
|
||||
}
|
||||
|
||||
enum Action {
|
||||
case onAppear
|
||||
case updateAccount(String)
|
||||
case updatePassword(String)
|
||||
case login
|
||||
@@ -75,6 +79,19 @@ struct LoginFeature {
|
||||
|
||||
Reduce { state, action in
|
||||
switch action {
|
||||
case .onAppear:
|
||||
// 防止重复初始化
|
||||
guard !state.isInitialized else {
|
||||
debugInfoSync("🚀 LoginFeature: 已初始化,跳过重复执行")
|
||||
return .none
|
||||
}
|
||||
|
||||
state.isInitialized = true
|
||||
debugInfoSync("🚀 LoginFeature: 首次初始化")
|
||||
|
||||
// 登录页面出现时的初始化逻辑
|
||||
return .none
|
||||
|
||||
case let .updateAccount(account):
|
||||
state.account = account
|
||||
return .none
|
||||
@@ -213,7 +230,9 @@ struct LoginFeature {
|
||||
state.accountModel = nil // 清除 AccountModel
|
||||
state.loginStep = .initial
|
||||
// Effect 清除本地存储的认证信息
|
||||
return .run { _ in await UserInfoManager.clearAllAuthenticationData() }
|
||||
return .run { _ in
|
||||
await UserInfoManager.clearAllAuthenticationData()
|
||||
}
|
||||
|
||||
case .idLogin:
|
||||
// IDLogin动作由子feature处理
|
||||
|
Reference in New Issue
Block a user