diff --git a/Examples/xx-messenger/Sources/AppCore/ReceiveFileHandler/ReceiveFileHandler.swift b/Examples/xx-messenger/Sources/AppCore/ReceiveFileHandler/ReceiveFileHandler.swift new file mode 100644 index 0000000000000000000000000000000000000000..92c266dadb51ca47b6e797f555f731366dcd3c75 --- /dev/null +++ b/Examples/xx-messenger/Sources/AppCore/ReceiveFileHandler/ReceiveFileHandler.swift @@ -0,0 +1,38 @@ +import XCTestDynamicOverlay +import XXClient +import XXMessengerClient + +public struct ReceiveFileHandler { + public typealias OnError = (Error) -> Void + + public var run: (@escaping OnError) -> Cancellable + + public func callAsFunction(onError: @escaping OnError) -> Cancellable { + run(onError) + } +} + +extension ReceiveFileHandler { + public static func live( + messenger: Messenger + ) -> ReceiveFileHandler { + ReceiveFileHandler { onError in + messenger.registerReceiveFileCallback(.init { result in + switch result { + case .success(let file): + // TODO: + break + + case .failure(let error): + onError(error) + } + }) + } + } +} + +extension ReceiveFileHandler { + public static let unimplemented = ReceiveFileHandler( + run: XCTUnimplemented("\(Self.self)", placeholder: Cancellable {}) + ) +}