新增线下收款记录和 ai 修图优化
This commit is contained in:
@@ -8,6 +8,8 @@ import Foundation
|
||||
/// 登录页 ViewModel,UI 状态与 Android `LoginViewModel` 对齐。
|
||||
final class LoginViewModel {
|
||||
|
||||
private let accountDeletionService: any AccountDeletionServing
|
||||
|
||||
private(set) var account = ""
|
||||
private(set) var password = ""
|
||||
private(set) var isPrivacyChecked = false
|
||||
@@ -16,6 +18,11 @@ final class LoginViewModel {
|
||||
private(set) var isSelectingAccount = false
|
||||
private(set) var pendingAccountSelection: AccountSelectionPayload?
|
||||
|
||||
/// 创建登录 ViewModel,并注入注销状态服务以支持7天内恢复账号。
|
||||
init(accountDeletionService: any AccountDeletionServing = AccountDeletionMockService.shared) {
|
||||
self.accountDeletionService = accountDeletionService
|
||||
}
|
||||
|
||||
var isLoginEnabled: Bool {
|
||||
isValidPhone && !trimmedPassword.isEmpty
|
||||
}
|
||||
@@ -122,9 +129,27 @@ final class LoginViewModel {
|
||||
username: normalizedUsername,
|
||||
password: trimmedPassword
|
||||
)
|
||||
|
||||
switch accountDeletionService.loginState(for: normalizedUsername) {
|
||||
case let .pending(request):
|
||||
return .accountDeletionPending(response, request)
|
||||
case .completed:
|
||||
throw AccountDeletionError.deletionCompleted
|
||||
case .none:
|
||||
break
|
||||
}
|
||||
return try await resolveLoginResponse(response, authAPI: authAPI)
|
||||
}
|
||||
|
||||
/// 用户确认恢复账号后取消注销,并继续处理已经通过密码验证的登录响应。
|
||||
func resumeLoginAfterCancelingDeletion(
|
||||
verifiedResponse: V9AuthResponse,
|
||||
authAPI: AuthAPI
|
||||
) async throws -> LoginResolution {
|
||||
_ = try accountDeletionService.cancelDeletion(username: normalizedUsername)
|
||||
return try await resolveLoginResponse(verifiedResponse, authAPI: authAPI)
|
||||
}
|
||||
|
||||
/// 选择一个账号并调用 set-user 换取正式 token。
|
||||
func selectAccount(_ account: AccountSwitchAccount, authAPI: AuthAPI) async throws -> V9AuthResponse {
|
||||
guard let payload = pendingAccountSelection, payload.hasTempToken else {
|
||||
|
||||
Reference in New Issue
Block a user