diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2019-12-05 13:18:12 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2019-12-05 16:05:10 +0100 |
| commit | c9cdf33fd52132c8303cf4d3c714908540fed48b (patch) | |
| tree | 147bb90d3df747e2747ca3a62dbc93bf71653445 | |
| parent | 8f4c8a7d2aed9100d4b998dad5f09dbf9387836e (diff) | |
| download | mullvadvpn-c9cdf33fd52132c8303cf4d3c714908540fed48b.tar.xz mullvadvpn-c9cdf33fd52132c8303cf4d3c714908540fed48b.zip | |
Adjust Login controller to the new Account facilities
| -rw-r--r-- | ios/MullvadVPN/LoginState.swift | 2 | ||||
| -rw-r--r-- | ios/MullvadVPN/LoginViewController.swift | 42 |
2 files changed, 16 insertions, 28 deletions
diff --git a/ios/MullvadVPN/LoginState.swift b/ios/MullvadVPN/LoginState.swift index b72e94da39..9f5be1d1a0 100644 --- a/ios/MullvadVPN/LoginState.swift +++ b/ios/MullvadVPN/LoginState.swift @@ -11,6 +11,6 @@ import Foundation enum LoginState { case `default` case authenticating - case failure(Error) + case failure(AccountError) case success } diff --git a/ios/MullvadVPN/LoginViewController.swift b/ios/MullvadVPN/LoginViewController.swift index 7ae878a4cd..5f2733f6a4 100644 --- a/ios/MullvadVPN/LoginViewController.swift +++ b/ios/MullvadVPN/LoginViewController.swift @@ -6,9 +6,9 @@ // Copyright © 2019 Amagicom AB. All rights reserved. // +import Combine import UIKit -import ProcedureKit -import os.log +import os private let kMinimumAccountTokenLength = 10 private let kValidAccountTokenCharacterSet = CharacterSet(charactersIn: "01234567890") @@ -26,7 +26,8 @@ class LoginViewController: UIViewController, UITextFieldDelegate, RootContainmen @IBOutlet var activityIndicator: SpinnerActivityIndicatorView! @IBOutlet var statusImageView: UIImageView! - private let procedureQueue = ProcedureQueue() + private var loginSubscriber: AnyCancellable? + private var loginState = LoginState.default { didSet { loginStateDidChange() @@ -144,17 +145,16 @@ class LoginViewController: UIViewController, UITextFieldDelegate, RootContainmen beginLogin() - verifyAccount(accountToken: accountToken) { [weak self] (result) in - guard let self = self else { return } - - switch result { - case .success: - self.endLogin(.success) - - case .failure(let error): - self.endLogin(.failure(error)) - } - } + loginSubscriber = Account.shared.login(with: accountToken) + .receive(on: DispatchQueue.main) + .sink(receiveCompletion: { (completionResult) in + switch completionResult { + case .finished: + self.endLogin(.success) + case .failure(let error): + self.endLogin(.failure(error)) + } + }, receiveValue: { _ in }) } @IBAction func openCreateAccount() { @@ -163,18 +163,6 @@ class LoginViewController: UIViewController, UITextFieldDelegate, RootContainmen // MARK: - Private - private func verifyAccount(accountToken: String, completion: @escaping (Result<(), Error>) -> Void) { - let delayProcedure = DelayProcedure(by: 1) - let loginProcedure = Account.login(with: accountToken) - - loginProcedure.addDependency(delayProcedure) - loginProcedure.addDidFinishBlockObserver(synchronizedWith: DispatchQueue.main) { (_, error) in - completion(error.flatMap({ .failure($0) }) ?? .success(())) - } - - procedureQueue.addOperations([delayProcedure, loginProcedure]) - } - private func loginStateDidChange() { accountInputGroup.loginState = loginState @@ -293,7 +281,7 @@ private extension LoginState { return NSLocalizedString("Checking account number", tableName: "Login", comment: "") case .failure(let error): - if case .invalidAccount? = error as? Account.Error { + if case .login(.invalidAccount) = error { return NSLocalizedString("Invalid account number", tableName: "Login", comment: "") } else { return NSLocalizedString("Internal error", tableName: "Login", comment: "") |
