From 70badd4b7aff10d4de581b94f4aee05ea9e6bac9 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 16 Sep 2022 18:02:19 +0200
Subject: [PATCH] Add LookupUD.Params struct

---
 Sources/XXClient/Functions/LookupUD.swift     | 39 +++++++++++++------
 .../Functions/MessengerVerifyContact.swift    | 12 +++---
 .../MessengerVerifyContactTests.swift         | 13 ++-----
 3 files changed, 38 insertions(+), 26 deletions(-)

diff --git a/Sources/XXClient/Functions/LookupUD.swift b/Sources/XXClient/Functions/LookupUD.swift
index 0626470c..3a505bc7 100644
--- a/Sources/XXClient/Functions/LookupUD.swift
+++ b/Sources/XXClient/Functions/LookupUD.swift
@@ -2,30 +2,45 @@ import Bindings
 import XCTestDynamicOverlay
 
 public struct LookupUD {
-  public var run: (Int, Contact, Data, Data, UdLookupCallback) throws -> SingleUseSendReport
+  public struct Params: Equatable {
+    public init(
+      e2eId: Int,
+      udContact: Contact,
+      lookupId: Data,
+      singleRequestParamsJSON: Data = GetSingleUseParams.liveDefault()
+    ) {
+      self.e2eId = e2eId
+      self.udContact = udContact
+      self.lookupId = lookupId
+      self.singleRequestParamsJSON = singleRequestParamsJSON
+    }
+
+    public var e2eId: Int
+    public var udContact: Contact
+    public var lookupId: Data
+    public var singleRequestParamsJSON: Data
+  }
+
+  public var run: (Params, UdLookupCallback) throws -> SingleUseSendReport
 
   public func callAsFunction(
-    e2eId: Int,
-    udContact: Contact,
-    lookupId: Data,
-    singleRequestParamsJSON: Data = GetSingleUseParams.liveDefault(),
+    params: Params,
     callback: UdLookupCallback
   ) throws -> SingleUseSendReport {
-    try run(e2eId, udContact, lookupId, singleRequestParamsJSON, callback)
+    try run(params, callback)
   }
 }
 
 extension LookupUD {
-  public static let live = LookupUD {
-    e2eId, udContact, lookupId, singleRequestParamsJSON, callback in
+  public static let live = LookupUD { params, callback in
 
     var error: NSError?
     let reportData = BindingsLookupUD(
-      e2eId,
-      udContact.data,
+      params.e2eId,
+      params.udContact.data,
       callback.makeBindingsUdLookupCallback(),
-      lookupId,
-      singleRequestParamsJSON,
+      params.lookupId,
+      params.singleRequestParamsJSON,
       &error
     )
     if let error = error {
diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift
index 7851dd1f..2a8d176b 100644
--- a/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift
@@ -30,11 +30,13 @@ extension MessengerVerifyContact {
         var lookupResult: Result<Contact, NSError>!
         let semaphore = DispatchSemaphore(value: 0)
         _ = try env.lookupUD(
-          e2eId: e2e.getId(),
-          udContact: try ud.getContact(),
-          lookupId: try contact.getId(),
-          singleRequestParamsJSON: env.getSingleUseParams(),
-          callback: .init { result in
+          params: LookupUD.Params(
+            e2eId: e2e.getId(),
+            udContact: try ud.getContact(),
+            lookupId: try contact.getId(),
+            singleRequestParamsJSON: env.getSingleUseParams()
+          ),
+          callback: UdLookupCallback { result in
             lookupResult = result
             semaphore.signal()
           }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift
index 52fed6cb..2f4e8a84 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift
@@ -39,7 +39,7 @@ final class MessengerVerifyContactTests: XCTestCase {
       var verified: Contact
       var e2eId: Int
     }
-    var didLookupUDWithParams: [LookupUDParams] = []
+    var didLookupUDWithParams: [LookupUD.Params] = []
     var didVerifyOwnershipWithParams: [VerifyOwnershipParams] = []
 
     var contact = Contact.unimplemented("contact-data".data(using: .utf8)!)
@@ -68,13 +68,8 @@ final class MessengerVerifyContactTests: XCTestCase {
       return ud
     }
     env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
-    env.lookupUD.run = { e2eId, udContact, lookupId, singleRequestParamsJSON, callback in
-      didLookupUDWithParams.append(.init(
-        e2eId: e2eId,
-        udContact: udContact,
-        lookupId: lookupId,
-        singleRequestParamsJSON: singleRequestParamsJSON
-      ))
+    env.lookupUD.run = { params, callback in
+      didLookupUDWithParams.append(params)
       callback.handle(.success(lookedUpContact))
       return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
     }
@@ -117,7 +112,7 @@ final class MessengerVerifyContactTests: XCTestCase {
       return ud
     }
     env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! }
-    env.lookupUD.run = { _, _, _, _, callback in
+    env.lookupUD.run = { _, callback in
       callback.handle(.failure(lookupFailure))
       return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data())
     }
-- 
GitLab