diff --git a/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift b/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift index 9cd7cea819fb9eb08e77da59fb184627963620fc..5778a590bebb5deaf4cf1043f5a64bdae0e7108f 100644 --- a/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift +++ b/Ring/Ring/Features/Me/LinkNewDeviceViewController.swift @@ -62,12 +62,6 @@ class LinkNewDeviceViewController: UIViewController, StoryboardBased, ViewModelB .bind(to: self.pinLabel.rx.isVisible) .addDisposableTo(self.disposeBag) - passwordField.rx.text - .map({!$0!.isEmpty}) - .shareReplay(1) - .bind(to: okButton.rx.isEnabled) - .addDisposableTo(self.disposeBag) - self.viewModel.observableState .observeOn(MainScheduler.instance) .subscribe(onNext: { [weak self] (state) in @@ -115,3 +109,4 @@ class LinkNewDeviceViewController: UIViewController, StoryboardBased, ViewModelB self.explanationMessage.text = self.viewModel.explanationMessage } } + diff --git a/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift b/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift index 196e4f3a258bf79b01165afad18961e8f2f635cd..5709dc862fd5cd93eb7f419b464e886ae7d38a05 100644 --- a/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift +++ b/Ring/Ring/Features/Walkthrough/CreateAccount/CreateAccountViewModel.swift @@ -170,6 +170,10 @@ class CreateAccountViewModel: Stateable, ViewModel { lazy var passwordValidationState: Observable<PasswordValidationState> = { return Observable.combineLatest(self.password.asObservable(), self.confirmPassword.asObservable()) { (password: String, confirmPassword: String) -> PasswordValidationState in + if password.isEmpty && confirmPassword.isEmpty { + return .validated + } + if password.characters.count < 6 { return .error(message: L10n.Createaccount.passwordCharactersNumberError) } @@ -186,17 +190,19 @@ class CreateAccountViewModel: Stateable, ViewModel { return Observable.combineLatest(self.passwordValidationState.asObservable(), self.usernameValidationState.asObservable(), self.registerUsername.asObservable(), + self.username.asObservable(), self.createState, resultSelector: { ( passwordValidationState: PasswordValidationState, usernameValidationState: UsernameValidationState, registerUsername: Bool, + username: String, creationState: AccountCreationState) -> Bool in var canAsk = true if registerUsername { - canAsk = canAsk && usernameValidationState.isAvailable + canAsk = canAsk && usernameValidationState.isAvailable && !username.isEmpty } canAsk = canAsk && passwordValidationState.isValidated @@ -220,13 +226,10 @@ class CreateAccountViewModel: Stateable, ViewModel { switch status { case .lookingUp: self?.usernameValidationState.value = .lookingForAvailibility(message: L10n.Createaccount.lookingForUsernameAvailability) - break case .invalid: self?.usernameValidationState.value = .invalid(message: L10n.Createaccount.invalidUsername) - break case .alreadyTaken: self?.usernameValidationState.value = .unavailable(message: L10n.Createaccount.usernameAlreadyTaken) - break default: self?.usernameValidationState.value = .available } @@ -277,3 +280,4 @@ class CreateAccountViewModel: Stateable, ViewModel { password: self.password.value) } } + diff --git a/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift b/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift index 8364598fab89cb0a219a066c7d6f1af0c277e1fa..753aa497902a5857a1b5e666d686ca5392b91882 100644 --- a/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift +++ b/Ring/Ring/Features/Walkthrough/LinkDevice/LinkDeviceViewModel.swift @@ -35,13 +35,9 @@ class LinkDeviceViewModel: Stateable, ViewModel { }() lazy var linkButtonEnabledState: Observable<Bool> = { - return Observable.combineLatest(self.password.asObservable(), - self.pin.asObservable()) {(password, pin) -> Bool in - if !password.isEmpty && !pin.isEmpty { - return true - } - return false - } + return self.pin.asObservable().map({ pin in + return !pin.isEmpty + }) }() let pin = Variable<String>("") @@ -76,3 +72,4 @@ class LinkDeviceViewModel: Stateable, ViewModel { password: self.password.value) } } +