From e0079d2188211f659f6a2b277f8e963842ee2237 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 8 Aug 2022 13:19:04 +0100
Subject: [PATCH] Add NewGroupChat functor

---
 .../Functors/NewGroupChat.swift               | 39 +++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/Functors/NewGroupChat.swift

diff --git a/Sources/ElixxirDAppsSDK/Functors/NewGroupChat.swift b/Sources/ElixxirDAppsSDK/Functors/NewGroupChat.swift
new file mode 100644
index 00000000..c5ed4559
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Functors/NewGroupChat.swift
@@ -0,0 +1,39 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct NewGroupChat {
+  public var run: (Int, GroupRequest, GroupChatProcessor) throws -> GroupChat
+
+  public func callAsFunction(
+    e2eId: Int,
+    groupRequest: GroupRequest,
+    groupChatProcessor: GroupChatProcessor
+  ) throws -> GroupChat {
+    try run(e2eId, groupRequest, groupChatProcessor)
+  }
+}
+
+extension NewGroupChat {
+  public static let live = NewGroupChat { e2eId, groupRequest, groupChatProcessor in
+    var error: NSError?
+    let bindingsGroupChat = BindingsNewGroupChat(
+      e2eId,
+      groupRequest.makeBindingsGroupRequest(),
+      groupChatProcessor.makeBindingsGroupChatProcessor(),
+      &error
+    )
+    if let error = error {
+      throw error
+    }
+    guard let bindingsGroupChat = bindingsGroupChat else {
+      fatalError("BindingsNewGroupChat returned `nil` without providing error")
+    }
+    return .live(bindingsGroupChat)
+  }
+}
+
+extension NewGroupChat {
+  public static let unimplemented = NewGroupChat(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
-- 
GitLab