From 404390b51f42e03fb50f4bbcc4513a77e1e0e673 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Thu, 2 Jun 2022 14:47:34 +0200 Subject: [PATCH] Add LogsListener --- Sources/ElixxirDAppsSDK/LogsListener.swift | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Sources/ElixxirDAppsSDK/LogsListener.swift diff --git a/Sources/ElixxirDAppsSDK/LogsListener.swift b/Sources/ElixxirDAppsSDK/LogsListener.swift new file mode 100644 index 00000000..c67e6964 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/LogsListener.swift @@ -0,0 +1,42 @@ +import Bindings + +public struct LogsListener { + public var listen: (@escaping (String) -> Void) -> Void + + public func callAsFunction(callback: @escaping (String) -> Void) { + listen(callback) + } +} + +extension LogsListener { + public static func live() -> LogsListener { + LogsListener { callback in + let listener = Listener(onLog: callback) + BindingsRegisterLogWriter(listener) + } + } +} + +private final class Listener: NSObject, BindingsLogWriterProtocol { + init(onLog: @escaping (String) -> Void) { + self.onLog = onLog + super.init() + } + + let onLog: (String) -> Void + + func log(_ p0: String?) { + guard let p0 = p0 else { + fatalError("BindingsLogWriter.log received `nil`") + } + onLog(p0) + } +} + +#if DEBUG +extension LogsListener { + public static let failing = LogsListener { _ in + fatalError("Not implemented") + } +} +#endif -- GitLab