Add CoordinatorDelegateQueuable protocol used by view models to handle coordinator delegation in an operation queue.

This commit is contained in:
SBiOSoftWhare
2019-01-23 10:49:54 +01:00
parent 34af58c0fe
commit df268cc16d
4 changed files with 61 additions and 40 deletions
@@ -16,7 +16,7 @@
import Foundation
final class KeyBackupSetupPassphraseViewModel: KeyBackupSetupPassphraseViewModelType {
final class KeyBackupSetupPassphraseViewModel: KeyBackupSetupPassphraseViewModelType, CoordinatorDelegateQueuable {
// MARK: - Properties
@@ -25,7 +25,7 @@ final class KeyBackupSetupPassphraseViewModel: KeyBackupSetupPassphraseViewModel
private(set) var passphraseStrength: PasswordStrength = .tooGuessable
private let passwordStrengthManager: PasswordStrengthManager
private let keyBackup: MXKeyBackup
private let coordinatorDelegateQueue: OperationQueue
let coordinatorDelegateQueue: OperationQueue
// MARK: Public
@@ -60,11 +60,7 @@ final class KeyBackupSetupPassphraseViewModel: KeyBackupSetupPassphraseViewModel
init(keyBackup: MXKeyBackup) {
self.passwordStrengthManager = PasswordStrengthManager()
self.keyBackup = keyBackup
let coordinatorDelegateQueue = OperationQueue()
coordinatorDelegateQueue.name = "KeyBackupSetupPassphraseViewModel.coordinatorDelegateQueue"
coordinatorDelegateQueue.maxConcurrentOperationCount = 1
self.coordinatorDelegateQueue = coordinatorDelegateQueue
self.coordinatorDelegateQueue = type(of: self).createCoordinatorDelegateQueue()
}
// MARK: - Public
@@ -86,7 +82,7 @@ final class KeyBackupSetupPassphraseViewModel: KeyBackupSetupPassphraseViewModel
// MARK: - Private
func setupPassphrase() {
private func setupPassphrase() {
guard let passphrase = self.passphrase else {
return
}
@@ -123,16 +119,4 @@ final class KeyBackupSetupPassphraseViewModel: KeyBackupSetupPassphraseViewModel
}
return self.passwordStrengthManager.passwordStrength(for: password)
}
private func pauseCoordinatorOperations() {
self.coordinatorDelegateQueue.isSuspended = true
}
private func resumeCoordinatorOperations() {
self.coordinatorDelegateQueue.isSuspended = false
}
private func cancelCoordinatorOperations() {
self.coordinatorDelegateQueue.cancelAllOperations()
}
}