Update logic
This commit is contained in:
parent
5d9a456d1d
commit
e602c1db59
|
|
@ -177,9 +177,9 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Override to change error description
|
/// 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)")
|
assertionFailure("You should override this method: errorDescription(for error: PassCodeError)")
|
||||||
return ""
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Override to change action title text
|
/// Override to change action title text
|
||||||
|
|
@ -192,7 +192,7 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
|
||||||
|
|
||||||
/// Call to show error
|
/// Call to show error
|
||||||
open func showError(for error: PassCodeError) {
|
open func showError(for error: PassCodeError) {
|
||||||
errorLabel?.text = errorDescription(for: error)
|
errorLabel?.attributedText = errorDescription(for: error)
|
||||||
errorLabel?.isHidden = false
|
errorLabel?.isHidden = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -232,7 +232,7 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
|
||||||
})
|
})
|
||||||
.disposed(by: disposeBag)
|
.disposed(by: disposeBag)
|
||||||
|
|
||||||
viewModel.passCodeControllerState
|
viewModel.passCodeControllerStateDriver
|
||||||
.drive(onNext: { [weak self] controllerState in
|
.drive(onNext: { [weak self] controllerState in
|
||||||
self?.configureUI(for: controllerState)
|
self?.configureUI(for: controllerState)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ open class BasePassCodeViewModel: BaseViewModel {
|
||||||
return validationResultHolder.asDriver()
|
return validationResultHolder.asDriver()
|
||||||
}
|
}
|
||||||
|
|
||||||
private let passCodeControllerStateHolder = Variable<PassCodeControllerState>(.enter)
|
private let passCodeControllerStateVariable = Variable<PassCodeControllerState>(.enter)
|
||||||
public var passCodeControllerState: Driver<PassCodeControllerState> {
|
public var passCodeControllerStateDriver: Driver<PassCodeControllerState> {
|
||||||
return passCodeControllerStateHolder.asDriver()
|
return passCodeControllerStateVariable.asDriver()
|
||||||
}
|
}
|
||||||
|
|
||||||
private let passCodeText = Variable<String?>(nil)
|
private let passCodeText = Variable<String?>(nil)
|
||||||
|
|
@ -95,7 +95,7 @@ open class BasePassCodeViewModel: BaseViewModel {
|
||||||
public func reset() {
|
public func reset() {
|
||||||
passCodeText.value = nil
|
passCodeText.value = nil
|
||||||
validationResultHolder.value = nil
|
validationResultHolder.value = nil
|
||||||
passCodeControllerStateHolder.value = controllerType == .change ? .oldEnter : .enter
|
passCodeControllerStateVariable.value = controllerType == .change ? .oldEnter : .enter
|
||||||
attemptsNumber = 0
|
attemptsNumber = 0
|
||||||
passCodeHolder.reset()
|
passCodeHolder.reset()
|
||||||
}
|
}
|
||||||
|
|
@ -152,13 +152,13 @@ private extension BasePassCodeViewModel {
|
||||||
if isValid, model.passCodeHolder.enterStep == .repeatEnter, let passCode = passCode {
|
if isValid, model.passCodeHolder.enterStep == .repeatEnter, let passCode = passCode {
|
||||||
model.authSucceed(.passCode(passCode))
|
model.authSucceed(.passCode(passCode))
|
||||||
} else {
|
} else {
|
||||||
model.passCodeControllerStateHolder.value = model.passCodeHolder.enterStep
|
model.passCodeControllerStateVariable.value = model.passCodeHolder.enterStep
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if isValid, let passCode = passCode {
|
if isValid, let passCode = passCode {
|
||||||
model.authSucceed(.passCode(passCode))
|
model.authSucceed(.passCode(passCode))
|
||||||
} else {
|
} else {
|
||||||
model.passCodeControllerStateHolder.value = model.passCodeHolder.enterStep
|
model.passCodeControllerStateVariable.value = model.passCodeHolder.enterStep
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -172,7 +172,7 @@ extension BasePassCodeViewModel {
|
||||||
validateIfNeeded()
|
validateIfNeeded()
|
||||||
|
|
||||||
if shouldUpdateControllerState {
|
if shouldUpdateControllerState {
|
||||||
passCodeControllerStateHolder.value = passCodeHolder.enterStep
|
passCodeControllerStateVariable.value = passCodeHolder.enterStep
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -189,11 +189,12 @@ extension BasePassCodeViewModel {
|
||||||
|
|
||||||
var validationResult = passCodeHolder.validate()
|
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
|
attemptsNumber += 1
|
||||||
|
|
||||||
if let passCode = validationResult.passCode, !isEnteredPassCodeValid(passCode) {
|
if let passCode = validationResult.passCode, !isEnteredPassCodeValid(passCode) {
|
||||||
assert(passCodeConfiguration.maxAttemptsNumber > attemptsNumber)
|
|
||||||
validationResult = .invalid(.wrongCode(passCodeConfiguration.maxAttemptsNumber - attemptsNumber))
|
validationResult = .invalid(.wrongCode(passCodeConfiguration.maxAttemptsNumber - attemptsNumber))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue