Migrate from iOS 17 Observation to iOS 16-compatible Combine architecture.
Lower deployment target to iOS 16, replace @Observable with ObservableObject, add navigation and UI compatibility shims, and include login smoke UI tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -6,31 +6,30 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Observation
|
||||
import Combine
|
||||
|
||||
@MainActor
|
||||
@Observable
|
||||
/// 实名认证 ViewModel,管理认证资料表单、审核状态、短信验证码和提交状态。
|
||||
final class RealNameAuthViewModel {
|
||||
private(set) var info: RealNameInfo?
|
||||
var realName = ""
|
||||
var idCardNo = ""
|
||||
var smsCode = ""
|
||||
var startDate = Date()
|
||||
var endDate = Calendar.current.date(byAdding: .year, value: 10, to: Date()) ?? Date()
|
||||
var isLongValid = false
|
||||
var frontUrl = ""
|
||||
var backUrl = ""
|
||||
private(set) var pendingFrontImageData: Data?
|
||||
private(set) var pendingBackImageData: Data?
|
||||
private(set) var frontUploadProgress: Int?
|
||||
private(set) var backUploadProgress: Int?
|
||||
private var pendingFrontFileName: String?
|
||||
private var pendingBackFileName: String?
|
||||
private(set) var loading = false
|
||||
private(set) var sendingCode = false
|
||||
private(set) var submitting = false
|
||||
var statusMessage: String?
|
||||
final class RealNameAuthViewModel: ObservableObject {
|
||||
@Published private(set) var info: RealNameInfo?
|
||||
@Published var realName = ""
|
||||
@Published var idCardNo = ""
|
||||
@Published var smsCode = ""
|
||||
@Published var startDate = Date()
|
||||
@Published var endDate = Calendar.current.date(byAdding: .year, value: 10, to: Date()) ?? Date()
|
||||
@Published var isLongValid = false
|
||||
@Published var frontUrl = ""
|
||||
@Published var backUrl = ""
|
||||
@Published private(set) var pendingFrontImageData: Data?
|
||||
@Published private(set) var pendingBackImageData: Data?
|
||||
@Published private(set) var frontUploadProgress: Int?
|
||||
@Published private(set) var backUploadProgress: Int?
|
||||
@Published private var pendingFrontFileName: String?
|
||||
@Published private var pendingBackFileName: String?
|
||||
@Published private(set) var loading = false
|
||||
@Published private(set) var sendingCode = false
|
||||
@Published private(set) var submitting = false
|
||||
@Published var statusMessage: String?
|
||||
|
||||
/// 拉取实名认证信息,并回填表单。
|
||||
func load(api: ProfileAPI) async throws {
|
||||
|
||||
Reference in New Issue
Block a user