diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2023-04-13 11:37:22 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2023-04-14 13:05:07 +0200 |
| commit | aa59ff49063bce28bab26f57082f909cc6b7fe8b (patch) | |
| tree | 86676a794521b58b232b76a0869deef5a5c876f1 /ios/Operations | |
| parent | 09ca3b13667b4ea6562d5520aa47913d8b60ceb2 (diff) | |
| download | mullvadvpn-aa59ff49063bce28bab26f57082f909cc6b7fe8b.tar.xz mullvadvpn-aa59ff49063bce28bab26f57082f909cc6b7fe8b.zip | |
AsyncOperation: add shortcuts for cancellation and completion events observation
Diffstat (limited to 'ios/Operations')
| -rw-r--r-- | ios/Operations/AsyncOperation.swift | 11 | ||||
| -rw-r--r-- | ios/Operations/AsyncOperationQueue.swift | 6 |
2 files changed, 13 insertions, 4 deletions
diff --git a/ios/Operations/AsyncOperation.swift b/ios/Operations/AsyncOperation.swift index 2939f0708e..78ae2fa627 100644 --- a/ios/Operations/AsyncOperation.swift +++ b/ios/Operations/AsyncOperation.swift @@ -422,6 +422,17 @@ public protocol OperationBlockObserverSupport {} extension AsyncOperation: OperationBlockObserverSupport {} extension OperationBlockObserverSupport where Self: AsyncOperation { + /// Add observer responding to cancellation event. + public func onCancel(_ fn: @escaping (Self) -> Void) { + addBlockObserver(OperationBlockObserver(didCancel: fn)) + } + + /// Add observer responding to finish event. + public func onFinish(_ fn: @escaping (Self, Error?) -> Void) { + addBlockObserver(OperationBlockObserver(didFinish: fn)) + } + + /// Add block-based observer. public func addBlockObserver(_ observer: OperationBlockObserver<Self>) { addObserver(observer) } diff --git a/ios/Operations/AsyncOperationQueue.swift b/ios/Operations/AsyncOperationQueue.swift index 4579546084..d1269a8175 100644 --- a/ios/Operations/AsyncOperationQueue.swift +++ b/ios/Operations/AsyncOperationQueue.swift @@ -73,11 +73,9 @@ private final class ExclusivityManager { operationsByCategory[category] = operations - let blockObserver = OperationBlockObserver(didFinish: { [weak self] op, error in + operation.onFinish { [weak self] op, error in self?.removeOperation(op, categories: categories) - }) - - operation.addObserver(blockObserver) + } } } |
