From 2cbd112d57019a8bb0d51991ee3e75090272667f Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 2 Jun 2022 10:29:33 +0200
Subject: [PATCH] Add NetworkWaiter

---
 Sources/ElixxirDAppsSDK/Client.swift        |  7 ++++--
 Sources/ElixxirDAppsSDK/NetworkWaiter.swift | 25 +++++++++++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)
 create mode 100644 Sources/ElixxirDAppsSDK/NetworkWaiter.swift

diff --git a/Sources/ElixxirDAppsSDK/Client.swift b/Sources/ElixxirDAppsSDK/Client.swift
index 47f4b2ef..7183cc63 100644
--- a/Sources/ElixxirDAppsSDK/Client.swift
+++ b/Sources/ElixxirDAppsSDK/Client.swift
@@ -2,12 +2,14 @@ import Bindings
 
 public struct Client {
   public var networkFollower: NetworkFollower
+  public var waitForNetwork: NetworkWaiter
 }
 
 extension Client {
   public static func live(bindingsClient: BindingsClient) -> Client {
     Client(
-      networkFollower: .live(bindingsClient: bindingsClient)
+      networkFollower: .live(bindingsClient: bindingsClient),
+      waitForNetwork: .live(bindingsClient: bindingsClient)
     )
   }
 }
@@ -15,7 +17,8 @@ extension Client {
 #if DEBUG
 extension Client {
   public static let failing = Client(
-    networkFollower: .failing
+    networkFollower: .failing,
+    waitForNetwork: .failing
   )
 }
 #endif
diff --git a/Sources/ElixxirDAppsSDK/NetworkWaiter.swift b/Sources/ElixxirDAppsSDK/NetworkWaiter.swift
new file mode 100644
index 00000000..2f1ac828
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/NetworkWaiter.swift
@@ -0,0 +1,25 @@
+import Bindings
+
+public struct NetworkWaiter {
+  public var wait: (_ timeoutMS: Int) -> Bool
+
+  public func callAsFunction(timeoutMS: Int) -> Bool {
+    wait(timeoutMS)
+  }
+}
+
+extension NetworkWaiter {
+  public static func live(bindingsClient: BindingsClient) -> NetworkWaiter {
+    NetworkWaiter { timeoutMS in
+      bindingsClient.wait(forNetwork: timeoutMS)
+    }
+  }
+}
+
+#if DEBUG
+extension NetworkWaiter {
+  public static let failing = NetworkWaiter { _ in
+    false
+  }
+}
+#endif
-- 
GitLab