From 9883ad728fff842601ce9f42168e1b2a266a1a48 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 2 Jun 2022 14:36:12 +0200
Subject: [PATCH] Add ClientIdProvider

---
 Sources/ElixxirDAppsSDK/Client.swift          |  3 +++
 .../ElixxirDAppsSDK/ClientIdProvider.swift    | 23 +++++++++++++++++++
 2 files changed, 26 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/ClientIdProvider.swift

diff --git a/Sources/ElixxirDAppsSDK/Client.swift b/Sources/ElixxirDAppsSDK/Client.swift
index 30ac66be..76832a86 100644
--- a/Sources/ElixxirDAppsSDK/Client.swift
+++ b/Sources/ElixxirDAppsSDK/Client.swift
@@ -1,6 +1,7 @@
 import Bindings
 
 public struct Client {
+  public var getId: ClientIdProvider
   public var networkFollower: NetworkFollower
   public var waitForNetwork: NetworkWaiter
   public var isNetworkHealthy: NetworkHealthProvider
@@ -14,6 +15,7 @@ public struct Client {
 extension Client {
   public static func live(bindingsClient: BindingsClient) -> Client {
     Client(
+      getId: .live(bindingsClient: bindingsClient),
       networkFollower: .live(bindingsClient: bindingsClient),
       waitForNetwork: .live(bindingsClient: bindingsClient),
       isNetworkHealthy: .live(bindingsClient: bindingsClient),
@@ -29,6 +31,7 @@ extension Client {
 #if DEBUG
 extension Client {
   public static let failing = Client(
+    getId: .failing,
     networkFollower: .failing,
     waitForNetwork: .failing,
     isNetworkHealthy: .failing,
diff --git a/Sources/ElixxirDAppsSDK/ClientIdProvider.swift b/Sources/ElixxirDAppsSDK/ClientIdProvider.swift
new file mode 100644
index 00000000..259a64b2
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/ClientIdProvider.swift
@@ -0,0 +1,23 @@
+import Bindings
+
+public struct ClientIdProvider {
+  public var get: () -> Int
+
+  public func callAsFunction() -> Int {
+    get()
+  }
+}
+
+extension ClientIdProvider {
+  public static func live(bindingsClient: BindingsClient) -> ClientIdProvider {
+    ClientIdProvider(get: bindingsClient.getID)
+  }
+}
+
+#if DEBUG
+extension ClientIdProvider {
+  public static let failing = ClientIdProvider {
+    fatalError("Not implemented")
+  }
+}
+#endif
-- 
GitLab