Update logic

This commit is contained in:
Igor Kislyuk 2018-03-26 14:11:46 +03:00
parent 5d9a456d1d
commit e602c1db59
2 changed files with 14 additions and 13 deletions

View File

@ -177,9 +177,9 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
}
/// Override to change error description
open func errorDescription(for error: PassCodeError) -> String {
open func errorDescription(for error: PassCodeError) -> NSAttributedString? {
assertionFailure("You should override this method: errorDescription(for error: PassCodeError)")
return ""
return nil
}
/// Override to change action title text
@ -192,7 +192,7 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
/// Call to show error
open func showError(for error: PassCodeError) {
errorLabel?.text = errorDescription(for: error)
errorLabel?.attributedText = errorDescription(for: error)
errorLabel?.isHidden = false
}
@ -232,7 +232,7 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
})
.disposed(by: disposeBag)
viewModel.passCodeControllerState
viewModel.passCodeControllerStateDriver
.drive(onNext: { [weak self] controllerState in
self?.configureUI(for: controllerState)
})

View File

@ -48,9 +48,9 @@ open class BasePassCodeViewModel: BaseViewModel {
return validationResultHolder.asDriver()
}
private let passCodeControllerStateHolder = Variable<PassCodeControllerState>(.enter)
public var passCodeControllerState: Driver<PassCodeControllerState> {
return passCodeControllerStateHolder.asDriver()
private let passCodeControllerStateVariable = Variable<PassCodeControllerState>(.enter)
public var passCodeControllerStateDriver: Driver<PassCodeControllerState> {
return passCodeControllerStateVariable.asDriver()
}
private let passCodeText = Variable<String?>(nil)
@ -95,7 +95,7 @@ open class BasePassCodeViewModel: BaseViewModel {
public func reset() {
passCodeText.value = nil
validationResultHolder.value = nil
passCodeControllerStateHolder.value = controllerType == .change ? .oldEnter : .enter
passCodeControllerStateVariable.value = controllerType == .change ? .oldEnter : .enter
attemptsNumber = 0
passCodeHolder.reset()
}
@ -152,13 +152,13 @@ private extension BasePassCodeViewModel {
if isValid, model.passCodeHolder.enterStep == .repeatEnter, let passCode = passCode {
model.authSucceed(.passCode(passCode))
} else {
model.passCodeControllerStateHolder.value = model.passCodeHolder.enterStep
model.passCodeControllerStateVariable.value = model.passCodeHolder.enterStep
}
} else {
if isValid, let passCode = passCode {
model.authSucceed(.passCode(passCode))
} else {
model.passCodeControllerStateHolder.value = model.passCodeHolder.enterStep
model.passCodeControllerStateVariable.value = model.passCodeHolder.enterStep
}
}
}
@ -172,7 +172,7 @@ extension BasePassCodeViewModel {
validateIfNeeded()
if shouldUpdateControllerState {
passCodeControllerStateHolder.value = passCodeHolder.enterStep
passCodeControllerStateVariable.value = passCodeHolder.enterStep
}
}
@ -189,11 +189,12 @@ extension BasePassCodeViewModel {
var validationResult = passCodeHolder.validate()
if passCodeHolder.type == .enter || (passCodeHolder.type == .change && passCodeHolder.enterStep == .newEnter) {
let passCodeValidationForPassCodeChange = passCodeHolder.type == .change && passCodeHolder.enterStep == .newEnter
if passCodeHolder.type == .enter || passCodeValidationForPassCodeChange {
attemptsNumber += 1
if let passCode = validationResult.passCode, !isEnteredPassCodeValid(passCode) {
assert(passCodeConfiguration.maxAttemptsNumber > attemptsNumber)
validationResult = .invalid(.wrongCode(passCodeConfiguration.maxAttemptsNumber - attemptsNumber))
}