summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2019-12-05 13:18:12 +0100
committerAndrej Mihajlov <and@mullvad.net>2019-12-05 16:05:10 +0100
commitc9cdf33fd52132c8303cf4d3c714908540fed48b (patch)
tree147bb90d3df747e2747ca3a62dbc93bf71653445
parent8f4c8a7d2aed9100d4b998dad5f09dbf9387836e (diff)
downloadmullvadvpn-c9cdf33fd52132c8303cf4d3c714908540fed48b.tar.xz
mullvadvpn-c9cdf33fd52132c8303cf4d3c714908540fed48b.zip
Adjust Login controller to the new Account facilities
-rw-r--r--ios/MullvadVPN/LoginState.swift2
-rw-r--r--ios/MullvadVPN/LoginViewController.swift42
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: "")