From 53b3d03f723f44a89af612b5b03226b854e0d4c0 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 2 Jun 2022 14:38:58 +0200
Subject: [PATCH] Add ClientProcessStatusProvider

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

diff --git a/Sources/ElixxirDAppsSDK/Client.swift b/Sources/ElixxirDAppsSDK/Client.swift
index 76832a86..5e65fcb0 100644
--- a/Sources/ElixxirDAppsSDK/Client.swift
+++ b/Sources/ElixxirDAppsSDK/Client.swift
@@ -2,6 +2,7 @@ import Bindings
 
 public struct Client {
   public var getId: ClientIdProvider
+  public var hasRunningProcesses: ClientProcessStatusProvider
   public var networkFollower: NetworkFollower
   public var waitForNetwork: NetworkWaiter
   public var isNetworkHealthy: NetworkHealthProvider
@@ -16,6 +17,7 @@ extension Client {
   public static func live(bindingsClient: BindingsClient) -> Client {
     Client(
       getId: .live(bindingsClient: bindingsClient),
+      hasRunningProcesses: .live(bindingsClient: bindingsClient),
       networkFollower: .live(bindingsClient: bindingsClient),
       waitForNetwork: .live(bindingsClient: bindingsClient),
       isNetworkHealthy: .live(bindingsClient: bindingsClient),
@@ -32,6 +34,7 @@ extension Client {
 extension Client {
   public static let failing = Client(
     getId: .failing,
+    hasRunningProcesses: .failing,
     networkFollower: .failing,
     waitForNetwork: .failing,
     isNetworkHealthy: .failing,
diff --git a/Sources/ElixxirDAppsSDK/ClientProcessStatusProvider.swift b/Sources/ElixxirDAppsSDK/ClientProcessStatusProvider.swift
new file mode 100644
index 00000000..297f00af
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/ClientProcessStatusProvider.swift
@@ -0,0 +1,23 @@
+import Bindings
+
+public struct ClientProcessStatusProvider {
+  public var get: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    get()
+  }
+}
+
+extension ClientProcessStatusProvider {
+  public static func live(bindingsClient: BindingsClient) -> ClientProcessStatusProvider {
+    ClientProcessStatusProvider(get: bindingsClient.hasRunningProcessies)
+  }
+}
+
+#if DEBUG
+extension ClientProcessStatusProvider {
+  public static let failing = ClientProcessStatusProvider {
+    fatalError("Not implemented")
+  }
+}
+#endif
-- 
GitLab