Introduce dueToTooManyErrors parameter

This commit is contained in:
ismailgulek
2020-09-29 17:46:07 +03:00
parent 208c1bb434
commit ef9b200939
12 changed files with 29 additions and 22 deletions
@@ -65,8 +65,8 @@ extension EnterPinCodeCoordinator: EnterPinCodeViewModelCoordinatorDelegate {
self.delegate?.enterPinCodeCoordinatorDidComplete(self)
}
func enterPinCodeViewModelDidCompleteWithReset(_ viewModel: EnterPinCodeViewModelType) {
self.delegate?.enterPinCodeCoordinatorDidCompleteWithReset(self)
func enterPinCodeViewModelDidCompleteWithReset(_ viewModel: EnterPinCodeViewModelType, dueToTooManyErrors: Bool) {
self.delegate?.enterPinCodeCoordinatorDidCompleteWithReset(self, dueToTooManyErrors: dueToTooManyErrors)
}
func enterPinCodeViewModel(_ viewModel: EnterPinCodeViewModelType, didCompleteWithPin pin: String) {
@@ -20,7 +20,7 @@ import Foundation
protocol EnterPinCodeCoordinatorDelegate: class {
func enterPinCodeCoordinatorDidComplete(_ coordinator: EnterPinCodeCoordinatorType)
func enterPinCodeCoordinatorDidCompleteWithReset(_ coordinator: EnterPinCodeCoordinatorType)
func enterPinCodeCoordinatorDidCompleteWithReset(_ coordinator: EnterPinCodeCoordinatorType, dueToTooManyErrors: Bool)
func enterPinCodeCoordinator(_ coordinator: EnterPinCodeCoordinatorType, didCompleteWithPin pin: String)
func enterPinCodeCoordinatorDidCancel(_ coordinator: EnterPinCodeCoordinatorType)
}
@@ -72,7 +72,7 @@ final class EnterPinCodeViewModel: EnterPinCodeViewModelType {
// go back to first state
self.update(viewState: .choosePin)
case .forgotPinAlertResetAction:
self.coordinatorDelegate?.enterPinCodeViewModelDidCompleteWithReset(self)
self.coordinatorDelegate?.enterPinCodeViewModelDidCompleteWithReset(self, dueToTooManyErrors: false)
case .forgotPinAlertCancelAction:
// no-op
break
@@ -146,7 +146,7 @@ final class EnterPinCodeViewModel: EnterPinCodeViewModelType {
pinCodePreferences.numberOfPinFailures += 1
if viewMode == .unlock && localAuthenticationService.shouldLogOutUser() {
// log out user
self.coordinatorDelegate?.enterPinCodeViewModelDidCompleteWithReset(self)
self.coordinatorDelegate?.enterPinCodeViewModelDidCompleteWithReset(self, dueToTooManyErrors: true)
return
}
if numberOfFailuresDuringEnterPIN < pinCodePreferences.allowedNumberOfTrialsBeforeAlert {
@@ -26,7 +26,7 @@ protocol EnterPinCodeViewModelViewDelegate: class {
protocol EnterPinCodeViewModelCoordinatorDelegate: class {
func enterPinCodeViewModelDidComplete(_ viewModel: EnterPinCodeViewModelType)
func enterPinCodeViewModelDidCompleteWithReset(_ viewModel: EnterPinCodeViewModelType)
func enterPinCodeViewModelDidCompleteWithReset(_ viewModel: EnterPinCodeViewModelType, dueToTooManyErrors: Bool)
func enterPinCodeViewModel(_ viewModel: EnterPinCodeViewModelType, didCompleteWithPin pin: String)
func enterPinCodeViewModelDidCancel(_ viewModel: EnterPinCodeViewModelType)
}
@@ -136,8 +136,8 @@ extension SetPinCoordinator: EnterPinCodeCoordinatorDelegate {
self.delegate?.setPinCoordinatorDidComplete(self)
}
func enterPinCodeCoordinatorDidCompleteWithReset(_ coordinator: EnterPinCodeCoordinatorType) {
self.delegate?.setPinCoordinatorDidCompleteWithReset(self)
func enterPinCodeCoordinatorDidCompleteWithReset(_ coordinator: EnterPinCodeCoordinatorType, dueToTooManyErrors: Bool) {
self.delegate?.setPinCoordinatorDidCompleteWithReset(self, dueToTooManyErrors: dueToTooManyErrors)
pinCodePreferences.reset()
}
@@ -170,13 +170,13 @@ extension SetPinCoordinator: SetupBiometricsCoordinatorDelegate {
self.delegate?.setPinCoordinatorDidComplete(self)
}
func setupBiometricsCoordinatorDidCompleteWithReset(_ coordinator: SetupBiometricsCoordinatorType) {
func setupBiometricsCoordinatorDidCompleteWithReset(_ coordinator: SetupBiometricsCoordinatorType, dueToTooManyErrors: Bool) {
if viewMode == .unlock && pinCodePreferences.isPinSet {
// and user also has set a pin, so fallback to it
setRootCoordinator(createEnterPinCodeCoordinator())
} else {
// cascade rest
self.delegate?.setPinCoordinatorDidCompleteWithReset(self)
self.delegate?.setPinCoordinatorDidCompleteWithReset(self, dueToTooManyErrors: dueToTooManyErrors)
}
}
@@ -36,7 +36,7 @@ import Foundation
@objc optional
func setPinCoordinatorBridgePresenterDelegateDidCancel(_ coordinatorBridgePresenter: SetPinCoordinatorBridgePresenter)
@objc optional
func setPinCoordinatorBridgePresenterDelegateDidCompleteWithReset(_ coordinatorBridgePresenter: SetPinCoordinatorBridgePresenter)
func setPinCoordinatorBridgePresenterDelegateDidCompleteWithReset(_ coordinatorBridgePresenter: SetPinCoordinatorBridgePresenter, dueToTooManyErrors: Bool)
}
/// SetPinCoordinatorBridgePresenter enables to start SetPinCoordinator from a view controller.
@@ -129,8 +129,8 @@ extension SetPinCoordinatorBridgePresenter: SetPinCoordinatorDelegate {
self.delegate?.setPinCoordinatorBridgePresenterDelegateDidComplete(self)
}
func setPinCoordinatorDidCompleteWithReset(_ coordinator: SetPinCoordinatorType) {
self.delegate?.setPinCoordinatorBridgePresenterDelegateDidCompleteWithReset?(self)
func setPinCoordinatorDidCompleteWithReset(_ coordinator: SetPinCoordinatorType, dueToTooManyErrors: Bool) {
self.delegate?.setPinCoordinatorBridgePresenterDelegateDidCompleteWithReset?(self, dueToTooManyErrors: dueToTooManyErrors)
}
func setPinCoordinatorDidCancel(_ coordinator: SetPinCoordinatorType) {
@@ -20,7 +20,7 @@ import Foundation
protocol SetPinCoordinatorDelegate: class {
func setPinCoordinatorDidComplete(_ coordinator: SetPinCoordinatorType)
func setPinCoordinatorDidCompleteWithReset(_ coordinator: SetPinCoordinatorType)
func setPinCoordinatorDidCompleteWithReset(_ coordinator: SetPinCoordinatorType, dueToTooManyErrors: Bool)
func setPinCoordinatorDidCancel(_ coordinator: SetPinCoordinatorType)
}
@@ -67,8 +67,8 @@ extension SetupBiometricsCoordinator: SetupBiometricsViewModelCoordinatorDelegat
self.delegate?.setupBiometricsCoordinatorDidComplete(self)
}
func setupBiometricsViewModelDidCompleteWithReset(_ viewModel: SetupBiometricsViewModelType) {
self.delegate?.setupBiometricsCoordinatorDidCompleteWithReset(self)
func setupBiometricsViewModelDidCompleteWithReset(_ viewModel: SetupBiometricsViewModelType, dueToTooManyErrors: Bool) {
self.delegate?.setupBiometricsCoordinatorDidCompleteWithReset(self, dueToTooManyErrors: dueToTooManyErrors)
}
func setupBiometricsViewModelDidCancel(_ viewModel: SetupBiometricsViewModelType) {
@@ -20,7 +20,7 @@ import Foundation
protocol SetupBiometricsCoordinatorDelegate: class {
func setupBiometricsCoordinatorDidComplete(_ coordinator: SetupBiometricsCoordinatorType)
func setupBiometricsCoordinatorDidCompleteWithReset(_ coordinator: SetupBiometricsCoordinatorType)
func setupBiometricsCoordinatorDidCompleteWithReset(_ coordinator: SetupBiometricsCoordinatorType, dueToTooManyErrors: Bool)
func setupBiometricsCoordinatorDidCancel(_ coordinator: SetupBiometricsCoordinatorType)
}
@@ -69,7 +69,7 @@ final class SetupBiometricsViewModel: SetupBiometricsViewModelType {
case .unlock:
unlockWithBiometrics()
case .cantUnlockedAlertResetAction:
coordinatorDelegate?.setupBiometricsViewModelDidCompleteWithReset(self)
coordinatorDelegate?.setupBiometricsViewModelDidCompleteWithReset(self, dueToTooManyErrors: false)
}
}
@@ -110,7 +110,7 @@ final class SetupBiometricsViewModel: SetupBiometricsViewModelType {
// biometrics can't be used until further unlock with pin or a new log in
self.pinCodePreferences.canUseBiometricsToUnlock = false
DispatchQueue.main.async {
self.coordinatorDelegate?.setupBiometricsViewModelDidCompleteWithReset(self)
self.coordinatorDelegate?.setupBiometricsViewModelDidCompleteWithReset(self, dueToTooManyErrors: true)
LocalAuthenticationService.isShowingBiometrics = false
}
} else if error.code == LAError.Code.userCancel.rawValue || error.code == LAError.Code.userFallback.rawValue {
@@ -24,7 +24,7 @@ protocol SetupBiometricsViewModelViewDelegate: class {
protocol SetupBiometricsViewModelCoordinatorDelegate: class {
func setupBiometricsViewModelDidComplete(_ viewModel: SetupBiometricsViewModelType)
func setupBiometricsViewModelDidCompleteWithReset(_ viewModel: SetupBiometricsViewModelType)
func setupBiometricsViewModelDidCompleteWithReset(_ viewModel: SetupBiometricsViewModelType, dueToTooManyErrors: Bool)
func setupBiometricsViewModelDidCancel(_ viewModel: SetupBiometricsViewModelType)
}