fix: use v9 store status for deregistration login
This commit is contained in:
@@ -130,6 +130,28 @@ final class LoginViewModel {
|
||||
guard let payload = pendingAccountSelection, payload.hasTempToken else {
|
||||
throw LoginFlowError.missingToken
|
||||
}
|
||||
let response = try await setUser(account, tempToken: payload.tempToken, authAPI: authAPI)
|
||||
pendingAccountSelection = nil
|
||||
notifyStateChange()
|
||||
return response
|
||||
}
|
||||
|
||||
/// 用户确认登录冷静期账号后继续换取正式 token;`set-user` 成功即由后端撤销原注销申请。
|
||||
func confirmDeregistrationLogin(
|
||||
_ confirmation: DeregistrationLoginConfirmation,
|
||||
authAPI: AuthAPI
|
||||
) async throws -> V9AuthResponse {
|
||||
try await setUser(confirmation.account, tempToken: confirmation.tempToken, authAPI: authAPI)
|
||||
}
|
||||
|
||||
private func setUser(
|
||||
_ account: AccountSwitchAccount,
|
||||
tempToken: String,
|
||||
authAPI: AuthAPI
|
||||
) async throws -> V9AuthResponse {
|
||||
guard !tempToken.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
|
||||
throw LoginFlowError.missingToken
|
||||
}
|
||||
guard account.businessUserId > 0 else {
|
||||
throw LoginFlowError.invalidAccount
|
||||
}
|
||||
@@ -144,12 +166,10 @@ final class LoginViewModel {
|
||||
notifyStateChange()
|
||||
}
|
||||
|
||||
let response = try await authAPI.setUser(account.toSetUserRequest(), tokenOverride: payload.tempToken)
|
||||
let response = try await authAPI.setUser(account.toSetUserRequest(), tokenOverride: tempToken)
|
||||
guard !response.token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
|
||||
throw LoginFlowError.missingToken
|
||||
}
|
||||
pendingAccountSelection = nil
|
||||
notifyStateChange()
|
||||
return response
|
||||
}
|
||||
|
||||
@@ -178,6 +198,11 @@ final class LoginViewModel {
|
||||
}
|
||||
|
||||
if accounts.count == 1, let account = accounts.first {
|
||||
if account.requiresDeregistrationConfirmation {
|
||||
return .needsDeregistrationConfirmation(
|
||||
DeregistrationLoginConfirmation(tempToken: token, account: account)
|
||||
)
|
||||
}
|
||||
let finalResponse = try await authAPI.setUser(account.toSetUserRequest(), tokenOverride: token)
|
||||
guard !finalResponse.token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
|
||||
throw LoginFlowError.missingToken
|
||||
|
||||
Reference in New Issue
Block a user