diff --git a/Sources/ElixxirDAppsSDK/Client.swift b/Sources/ElixxirDAppsSDK/Client.swift index 47f4b2ef586c2f2cdbe7bb3730c4308af5d7faa3..7183cc636a9f2c5410d14d437e9c41d5f540d71f 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 0000000000000000000000000000000000000000..2f1ac828bb23f56a8e4be1f04ce5f8ff2bf4a04e --- /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