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 KeyBackupSetupRecoveryKeyViewModel: KeyBackupSetupRecoveryKeyViewModelType {
final class KeyBackupSetupRecoveryKeyViewModel: KeyBackupSetupRecoveryKeyViewModelType, CoordinatorDelegateQueuable {
// MARK: - Properties
@@ -24,7 +24,7 @@ final class KeyBackupSetupRecoveryKeyViewModel: KeyBackupSetupRecoveryKeyViewMod
private let megolmBackupCreationInfo: MXMegolmBackupCreationInfo
private let keyBackup: MXKeyBackup
private let coordinatorDelegateQueue: OperationQueue
let coordinatorDelegateQueue: OperationQueue
private var createKeyBackupOperation: MXHTTPOperation?
// MARK: Public
@@ -40,11 +40,7 @@ final class KeyBackupSetupRecoveryKeyViewModel: KeyBackupSetupRecoveryKeyViewMod
self.megolmBackupCreationInfo = megolmBackupCreationInfo
self.recoveryKey = megolmBackupCreationInfo.recoveryKey
self.keyBackup = keyBackup
let coordinatorDelegateQueue = OperationQueue()
coordinatorDelegateQueue.name = "KeyBackupSetupRecoveryKeyViewModel.coordinatorDelegateQueue"
coordinatorDelegateQueue.maxConcurrentOperationCount = 1
self.coordinatorDelegateQueue = coordinatorDelegateQueue
self.coordinatorDelegateQueue = type(of: self).createCoordinatorDelegateQueue()
}
deinit {
@@ -71,7 +67,7 @@ final class KeyBackupSetupRecoveryKeyViewModel: KeyBackupSetupRecoveryKeyViewMod
// MARK: - Private
func createBackup() {
private func createBackup() {
self.viewDelegate?.keyBackupSetupRecoveryKeyViewModel(self, didUpdateViewState: .loading)
self.keyBackup.createKeyBackupVersion(self.megolmBackupCreationInfo, success: { [weak self] (keyBackupVersion) in
@@ -92,16 +88,4 @@ final class KeyBackupSetupRecoveryKeyViewModel: KeyBackupSetupRecoveryKeyViewMod
sself.viewDelegate?.keyBackupSetupRecoveryKeyViewModel(sself, didUpdateViewState: .error(error))
})
}
private func pauseCoordinatorOperations() {
self.coordinatorDelegateQueue.isSuspended = true
}
private func resumeCoordinatorOperations() {
self.coordinatorDelegateQueue.isSuspended = false
}
private func cancelCoordinatorOperations() {
self.coordinatorDelegateQueue.cancelAllOperations()
}
}