新增线下收款记录和 ai 修图优化

This commit is contained in:
han xin
2026-08-21 15:51:52 +08:00
parent 6fe9928b49
commit 5cf4409bad
40 changed files with 5482 additions and 56 deletions
+25
View File
@@ -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 {