Add numberOfPinFailures

This commit is contained in:
ismailgulek 2020-09-28 16:19:51 +03:00
parent 14709201f8
commit daf6788111
2 changed files with 23 additions and 2 deletions

View file

@ -32,6 +32,7 @@ final class PinCodePreferences: NSObject {
static let pin: String = "pin" static let pin: String = "pin"
static let biometricsEnabled: String = "biometricsEnabled" static let biometricsEnabled: String = "biometricsEnabled"
static let canUseBiometricsToUnlock: String = "canUseBiometricsToUnlock" static let canUseBiometricsToUnlock: String = "canUseBiometricsToUnlock"
static let numberOfPinFailures: String = "numberOfPinFailures"
} }
static let shared = PinCodePreferences() static let shared = PinCodePreferences()
@ -39,7 +40,7 @@ final class PinCodePreferences: NSObject {
/// Store. Defaults to `KeychainStore` /// Store. Defaults to `KeychainStore`
private let store: KeyValueStore private let store: KeyValueStore
override init() { override private init() {
store = KeychainStore(withKeychain: Keychain(service: PinConstants.pinCodeKeychainService, store = KeychainStore(withKeychain: Keychain(service: PinConstants.pinCodeKeychainService,
accessGroup: BuildSettings.keychainAccessGroup)) accessGroup: BuildSettings.keychainAccessGroup))
super.init() super.init()
@ -129,6 +130,23 @@ final class PinCodePreferences: NSObject {
} }
} }
var numberOfPinFailures: Int {
get {
do {
return try store.integer(forKey: StoreKeys.numberOfPinFailures) ?? 0
} catch let error {
NSLog("[PinCodePreferences] Error when reading numberOfPinFailures from store: \(error)")
return 0
}
} set {
do {
try store.set(newValue, forKey: StoreKeys.numberOfPinFailures)
} catch let error {
NSLog("[PinCodePreferences] Error when storing numberOfPinFailures to the store: \(error)")
}
}
}
var isBiometricsSet: Bool { var isBiometricsSet: Bool {
return biometricsEnabled == true return biometricsEnabled == true
} }
@ -171,5 +189,7 @@ final class PinCodePreferences: NSObject {
func reset() { func reset() {
pin = nil pin = nil
biometricsEnabled = nil biometricsEnabled = nil
canUseBiometricsToUnlock = nil
numberOfPinFailures = 0
} }
} }

View file

@ -53,7 +53,8 @@ final class SetPinCoordinator: SetPinCoordinatorType {
private func getRootCoordinator() -> Coordinator & Presentable { private func getRootCoordinator() -> Coordinator & Presentable {
switch viewMode { switch viewMode {
case .unlock: case .unlock:
if pinCodePreferences.isBiometricsSet { let canUseBiometricsToUnlock = pinCodePreferences.canUseBiometricsToUnlock ?? true
if pinCodePreferences.isBiometricsSet && canUseBiometricsToUnlock {
return createSetupBiometricsCoordinator() return createSetupBiometricsCoordinator()
} else { } else {
return createEnterPinCodeCoordinator() return createEnterPinCodeCoordinator()