从 iOS 17 Observation 迁移至 iOS 16 兼容的 Combine 架构

将最低部署版本降至 iOS 16,以 ObservableObject 替换 @Observable,新增导航与 UI 兼容层,并补充登录冒烟 UI 测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-26 10:16:35 +08:00
parent 0314033a7f
commit 703078352c
127 changed files with 2320 additions and 1465 deletions

View File

@ -9,12 +9,12 @@ import SwiftUI
///
struct HomeMoreFunctionsView: View {
@Environment(PermissionContext.self) private var permissionContext
@Environment(AppRouter.self) private var appRouter
@Environment(RouterPath.self) private var router
@EnvironmentObject private var permissionContext: PermissionContext
@EnvironmentObject private var appRouter: AppRouter
@EnvironmentObject private var router: RouterPath
@Environment(\.dismiss) private var dismiss
@State private var viewModel = HomeViewModel()
@StateObject private var viewModel = HomeViewModel()
@State private var commonUris: [String] = []
private let commonMenuStore = HomeCommonMenuStore()
@ -49,10 +49,10 @@ struct HomeMoreFunctionsView: View {
.task {
rebuildMenus()
}
.onChange(of: permissionContext.currentRole?.id) { _, _ in
.onChange(of: permissionContext.currentRole?.id) { _ in
rebuildMenus()
}
.onChange(of: permissionContext.rolePermissions.count) { _, _ in
.onChange(of: permissionContext.rolePermissions.count) { _ in
rebuildMenus()
}
}

View File

@ -10,13 +10,13 @@ import SwiftUI
///
struct HomeView: View {
@Environment(AccountContext.self) private var accountContext
@Environment(PermissionContext.self) private var permissionContext
@Environment(AppRouter.self) private var appRouter
@Environment(RouterPath.self) private var router
@EnvironmentObject private var accountContext: AccountContext
@EnvironmentObject private var permissionContext: PermissionContext
@EnvironmentObject private var appRouter: AppRouter
@EnvironmentObject private var router: RouterPath
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
@State private var viewModel = HomeViewModel()
@StateObject private var viewModel = HomeViewModel()
@State private var commonUris: [String] = []
@State private var isOnline = false
@State private var reminderMinutes = 0
@ -113,10 +113,10 @@ struct HomeView: View {
guard isOnline, secondsUntilReport > 0 else { return }
secondsUntilReport -= 1
}
.onChange(of: permissionContext.currentRole?.id) { _, _ in
.onChange(of: permissionContext.currentRole?.id) { _ in
rebuildMenusFromCurrentContext()
}
.onChange(of: permissionContext.rolePermissions.count) { _, _ in
.onChange(of: permissionContext.rolePermissions.count) { _ in
rebuildMenusFromCurrentContext()
}
.alert("切换在线状态", isPresented: $showOnlineDialog) {
@ -423,9 +423,9 @@ struct HomeView: View {
#Preview {
NavigationStack {
HomeView()
.environment(AccountContext())
.environment(PermissionContext())
.environment(AppRouter())
.environment(RouterPath())
.environmentObject(AccountContext())
.environmentObject(PermissionContext())
.environmentObject(AppRouter())
.environmentObject(RouterPath())
}
}