diff options
Diffstat (limited to 'ios/Operations/OperationBlockObserverSupport.swift')
| -rw-r--r-- | ios/Operations/OperationBlockObserverSupport.swift | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/ios/Operations/OperationBlockObserverSupport.swift b/ios/Operations/OperationBlockObserverSupport.swift new file mode 100644 index 0000000000..196adee763 --- /dev/null +++ b/ios/Operations/OperationBlockObserverSupport.swift @@ -0,0 +1,35 @@ +// +// OperationBlockObserverSupport.swift +// Operations +// +// Created by Jon Petersson on 2023-09-07. +// Copyright © 2023 Mullvad VPN AB. All rights reserved. +// + +import Foundation + +public protocol 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 observer responding to start event. + public func onStart(_ fn: @escaping (Self) -> Void) { + addBlockObserver(OperationBlockObserver(didStart: fn)) + } + + /// Add block-based observer. + public func addBlockObserver(_ observer: OperationBlockObserver<Self>) { + addObserver(observer) + } + + // swiftlint:disable:next file_length +} |
