
- 新增设置功能模块,包含用户信息管理和设置选项。 - 实现动态视图,展示用户动态内容。 - 更新HomeView以支持设置页面的展示和动态视图的切换。 - 添加底部导航栏,增强用户体验。 - 更新相关视图和组件,确保一致的UI风格和交互体验。
75 lines
2.3 KiB
Swift
75 lines
2.3 KiB
Swift
import Foundation
|
|
import ComposableArchitecture
|
|
|
|
@Reducer
|
|
struct SettingFeature {
|
|
@ObservableState
|
|
struct State: Equatable {
|
|
var userInfo: UserInfo?
|
|
var accountModel: AccountModel?
|
|
var isLoading = false
|
|
var error: String?
|
|
}
|
|
|
|
enum Action: Equatable {
|
|
case onAppear
|
|
case loadUserInfo
|
|
case userInfoLoaded(UserInfo?)
|
|
case loadAccountModel
|
|
case accountModelLoaded(AccountModel?)
|
|
case logoutTapped
|
|
case logout
|
|
case dismissTapped
|
|
}
|
|
|
|
var body: some ReducerOf<Self> {
|
|
Reduce { state, action in
|
|
switch action {
|
|
case .onAppear:
|
|
return .concatenate(
|
|
.send(.loadUserInfo),
|
|
.send(.loadAccountModel)
|
|
)
|
|
|
|
case .loadUserInfo:
|
|
let userInfo = UserInfoManager.getUserInfo()
|
|
return .send(.userInfoLoaded(userInfo))
|
|
|
|
case let .userInfoLoaded(userInfo):
|
|
state.userInfo = userInfo
|
|
return .none
|
|
|
|
case .loadAccountModel:
|
|
let accountModel = UserInfoManager.getAccountModel()
|
|
return .send(.accountModelLoaded(accountModel))
|
|
|
|
case let .accountModelLoaded(accountModel):
|
|
state.accountModel = accountModel
|
|
return .none
|
|
|
|
case .logoutTapped:
|
|
return .send(.logout)
|
|
|
|
case .logout:
|
|
state.isLoading = true
|
|
|
|
// 清除所有认证数据
|
|
UserInfoManager.clearAllAuthenticationData()
|
|
|
|
// 发送通知返回登录页面
|
|
NotificationCenter.default.post(name: .homeLogout, object: nil)
|
|
return .none
|
|
|
|
case .dismissTapped:
|
|
// 发送关闭设置页面的通知
|
|
NotificationCenter.default.post(name: .settingsDismiss, object: nil)
|
|
return .none
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - Notification Extension
|
|
extension Notification.Name {
|
|
static let settingsDismiss = Notification.Name("settingsDismiss")
|
|
} |