从 iOS 17 Observation 迁移至 iOS 16 兼容的 Combine 架构
将最低部署版本降至 iOS 16,以 ObservableObject 替换 @Observable,新增导航与 UI 兼容层,并补充登录冒烟 UI 测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Observation
|
||||
import Combine
|
||||
|
||||
/// 登录输入焦点实体,标识当前需要聚焦的输入框。
|
||||
enum LoginField: Hashable {
|
||||
@ -68,17 +68,16 @@ enum LoginFlowError: LocalizedError {
|
||||
}
|
||||
|
||||
@MainActor
|
||||
@Observable
|
||||
/// 登录页 ViewModel,负责表单状态、登录请求和多账号选择流程。
|
||||
final class LoginViewModel {
|
||||
var username = "18651857230"
|
||||
var password = "zhifly666"
|
||||
var privacyChecked = false
|
||||
var isLoading = false
|
||||
var isSelectingAccount = false
|
||||
var showsPassword = false
|
||||
var showsAgreementSheet = false
|
||||
var pendingAccountSelection: AccountSelectionPayload?
|
||||
final class LoginViewModel: ObservableObject {
|
||||
@Published var username = "18651857230"
|
||||
@Published var password = "zhifly666"
|
||||
@Published var privacyChecked = false
|
||||
@Published var isLoading = false
|
||||
@Published var isSelectingAccount = false
|
||||
@Published var showsPassword = false
|
||||
@Published var showsAgreementSheet = false
|
||||
@Published var pendingAccountSelection: AccountSelectionPayload?
|
||||
|
||||
var canSubmit: Bool {
|
||||
isValidPhone && !trimmedPassword.isEmpty
|
||||
|
||||
Reference in New Issue
Block a user