From ada1bf9d3de4ae110e59de3eb4ddb9543a17e8e6 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Wed, 19 Oct 2022 10:57:23 +0200
Subject: [PATCH] Add ReceiveFileHandler

---
 .../ReceiveFileHandler.swift                  | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 Examples/xx-messenger/Sources/AppCore/ReceiveFileHandler/ReceiveFileHandler.swift

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 00000000..92c266da
--- /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 {})
+  )
+}
-- 
GitLab