diff --git a/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift b/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift index 3b94c89a..17baac58 100644 --- a/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift +++ b/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift @@ -22,32 +22,20 @@ import Foundation -class BaseClosureObserverOperation: DependendAsyncOperation { - typealias OnResultClosure = ResultClosureType - - let onResult: OnResultClosure? - - init(dependency: AsyncOperation, - onResult: OnResultClosure? = nil) { - - self.onResult = onResult - - super.init(dependency: dependency) { $0 } - } -} - -private final class ClosureObserverOperation: - BaseClosureObserverOperation) -> Void> { +private final class ClosureObserverOperation: DependendAsyncOperation { + typealias OnResultClosure = (Result) -> Void + private let onResult: OnResultClosure? private let callbackQueue: DispatchQueue init(dependency: AsyncOperation, onResult: OnResultClosure? = nil, callbackQueue: DispatchQueue = .main) { + self.onResult = onResult self.callbackQueue = callbackQueue - super.init(dependency: dependency, onResult: onResult) + super.init(dependency: dependency) { $0 } } override func handle(result: Result) { @@ -60,8 +48,18 @@ private final class ClosureObserverOperation: } } -private final class UIClosureObserverOperation: - BaseClosureObserverOperation) -> Void> { +private final class UIClosureObserverOperation: DependendAsyncOperation { + typealias OnResultClosure = @MainActor (Result) -> Void + + private let onResult: OnResultClosure? + + init(dependency: AsyncOperation, + onResult: OnResultClosure? = nil) { + + self.onResult = onResult + + super.init(dependency: dependency) { $0 } + } override func handle(result: Result) { self.result = result