39 lines
1.0 KiB
Swift
39 lines
1.0 KiB
Swift
import Foundation
|
|
|
|
class RemoteNotificationsReauthenticateOperation: AsyncOperation {
|
|
|
|
var appLanguageOperationError: Error?
|
|
private(set) var didReauthenticate: Bool = false
|
|
private let authManager: WMFAuthenticationManager
|
|
|
|
init(authManager: WMFAuthenticationManager) {
|
|
self.authManager = authManager
|
|
}
|
|
|
|
override func execute() {
|
|
|
|
guard let error = appLanguageOperationError as? RemoteNotificationsAPIController.ResultError,
|
|
error.code == "login-required" else {
|
|
finish()
|
|
return
|
|
}
|
|
|
|
self.authManager.loginWithSavedCredentials { [weak self] result in
|
|
|
|
guard let self = self else {
|
|
return
|
|
}
|
|
|
|
switch result {
|
|
case .success:
|
|
self.didReauthenticate = true
|
|
self.finish()
|
|
case .alreadyLoggedIn:
|
|
self.finish()
|
|
case .failure(let error):
|
|
self.finish(with: error)
|
|
}
|
|
}
|
|
}
|
|
}
|