From ec6c667c20be6b7b73b107505f7b06b61d7043cd Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Wed, 14 Sep 2022 21:58:33 +0200
Subject: [PATCH] Add MultiLookupUD function wrapper

---
 .../XXClient/Functions/MultiLookupUD.swift    | 57 +++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 Sources/XXClient/Functions/MultiLookupUD.swift

diff --git a/Sources/XXClient/Functions/MultiLookupUD.swift b/Sources/XXClient/Functions/MultiLookupUD.swift
new file mode 100644
index 00000000..0cf81669
--- /dev/null
+++ b/Sources/XXClient/Functions/MultiLookupUD.swift
@@ -0,0 +1,57 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct MultiLookupUD {
+  public struct Params: Equatable {
+    public init(
+      e2eId: Int,
+      udContact: Data,
+      lookupIds: [Data],
+      singleRequestParams: Data = GetSingleUseParams.liveDefault()
+    ) {
+      self.e2eId = e2eId
+      self.udContact = udContact
+      self.lookupIds = lookupIds
+      self.singleRequestParams = singleRequestParams
+    }
+
+    public var e2eId: Int
+    public var udContact: Data
+    public var lookupIds: [Data]
+    public var singleRequestParams: Data
+  }
+
+  public var run: (Params, UdMultiLookupCallback) throws -> Void
+
+  public func callAsFunction(params: Params, callback: UdMultiLookupCallback) throws -> Void {
+    try run(params, callback)
+  }
+}
+
+extension MultiLookupUD {
+  public static func live() -> MultiLookupUD {
+    MultiLookupUD { params, callback in
+      var error: NSError?
+      let result = BindingsMultiLookupUD(
+        params.e2eId,
+        params.udContact,
+        callback.makeBindingsUdMultiLookupCallback(),
+        try JSONEncoder().encode(params.lookupIds),
+        params.singleRequestParams,
+        &error
+      )
+      if let error = error {
+        throw error
+      }
+      guard result else {
+        fatalError("BindingsMultiLookupUD returned `false` without providing error")
+      }
+    }
+  }
+}
+
+extension MultiLookupUD {
+  public static let unimplemented = MultiLookupUD(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
-- 
GitLab