From eccadfed77c7f1a9c056d4bc42343517f4687cbf Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 21 Jul 2022 18:45:56 +0100
Subject: [PATCH] Add CmixWaitForNetwork functor

---
 Sources/ElixxirDAppsSDK/Cmix.swift            |  7 ++++--
 .../ElixxirDAppsSDK/CmixWaitForNetwork.swift  | 22 ++++++++++++++++
 .../Legacy/NetworkWaiter.swift                | 25 -------------------
 3 files changed, 27 insertions(+), 27 deletions(-)
 create mode 100644 Sources/ElixxirDAppsSDK/CmixWaitForNetwork.swift
 delete mode 100644 Sources/ElixxirDAppsSDK/Legacy/NetworkWaiter.swift

diff --git a/Sources/ElixxirDAppsSDK/Cmix.swift b/Sources/ElixxirDAppsSDK/Cmix.swift
index c9518d30..092cff8b 100644
--- a/Sources/ElixxirDAppsSDK/Cmix.swift
+++ b/Sources/ElixxirDAppsSDK/Cmix.swift
@@ -9,6 +9,7 @@ public struct Cmix {
   public var networkFollowerStatus: CmixNetworkFollowerStatus
   public var startNetworkFollower: CmixStartNetworkFollower
   public var stopNetworkFollower: CmixStopNetworkFollower
+  public var waitForNetwork: CmixWaitForNetwork
 }
 
 extension Cmix {
@@ -21,7 +22,8 @@ extension Cmix {
       hasRunningProcesses: .live(bindingsCmix),
       networkFollowerStatus: .live(bindingsCmix),
       startNetworkFollower: .live(bindingsCmix),
-      stopNetworkFollower: .live(bindingsCmix)
+      stopNetworkFollower: .live(bindingsCmix),
+      waitForNetwork: .live(bindingsCmix)
     )
   }
 }
@@ -35,6 +37,7 @@ extension Cmix {
     hasRunningProcesses: .unimplemented,
     networkFollowerStatus: .unimplemented,
     startNetworkFollower: .unimplemented,
-    stopNetworkFollower: .unimplemented
+    stopNetworkFollower: .unimplemented,
+    waitForNetwork: .unimplemented
   )
 }
diff --git a/Sources/ElixxirDAppsSDK/CmixWaitForNetwork.swift b/Sources/ElixxirDAppsSDK/CmixWaitForNetwork.swift
new file mode 100644
index 00000000..3174c69f
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/CmixWaitForNetwork.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct CmixWaitForNetwork {
+  public var run: (Int) -> Bool
+
+  public func callAsFunction(timeoutMS: Int) -> Bool {
+    run(timeoutMS)
+  }
+}
+
+extension CmixWaitForNetwork {
+  public static func live(_ bindingsCmix: BindingsCmix) -> CmixWaitForNetwork {
+    CmixWaitForNetwork(run: bindingsCmix.wait(forNetwork:))
+  }
+}
+
+extension CmixWaitForNetwork {
+  public static let unimplemented = CmixWaitForNetwork(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Legacy/NetworkWaiter.swift b/Sources/ElixxirDAppsSDK/Legacy/NetworkWaiter.swift
deleted file mode 100644
index 4782ab90..00000000
--- a/Sources/ElixxirDAppsSDK/Legacy/NetworkWaiter.swift
+++ /dev/null
@@ -1,25 +0,0 @@
-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: BindingsCmix) -> NetworkWaiter {
-    NetworkWaiter { timeoutMS in
-      bindingsClient.wait(forNetwork: timeoutMS)
-    }
-  }
-}
-
-#if DEBUG
-extension NetworkWaiter {
-  public static let failing = NetworkWaiter { _ in
-    fatalError("Not implemented")
-  }
-}
-#endif
-- 
GitLab