From 8dfd7580400fd45c3d4d4b482104e1f1987bd71a Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Thu, 2 Jun 2022 14:14:44 +0200 Subject: [PATCH] Add ConnectionAuthStatusProvider --- Sources/ElixxirDAppsSDK/Connection.swift | 8 ++--- .../ConnectionAuthStatusProvider.swift | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 Sources/ElixxirDAppsSDK/ConnectionAuthStatusProvider.swift diff --git a/Sources/ElixxirDAppsSDK/Connection.swift b/Sources/ElixxirDAppsSDK/Connection.swift index cd6e0fa8..4ecac93a 100644 --- a/Sources/ElixxirDAppsSDK/Connection.swift +++ b/Sources/ElixxirDAppsSDK/Connection.swift @@ -1,7 +1,7 @@ import Bindings public struct Connection { - public var isAuthenticated: () -> Bool + public var isAuthenticated: ConnectionAuthStatusProvider public var getPartner: ConnectionPartnerProvider public var send: MessageSender public var listen: MessageListener @@ -13,7 +13,7 @@ extension Connection { bindingsConnection: BindingsConnection ) -> Connection { Connection( - isAuthenticated: { false }, + isAuthenticated: .live(bindingsConnection: bindingsConnection), getPartner: .live(bindingsConnection: bindingsConnection), send: .live(bindingsConnection: bindingsConnection), listen: .live(bindingsConnection: bindingsConnection), @@ -25,7 +25,7 @@ extension Connection { bindingsAuthenticatedConnection: BindingsAuthenticatedConnection ) -> Connection { Connection( - isAuthenticated: bindingsAuthenticatedConnection.isAuthenticated, + isAuthenticated: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection), getPartner: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection), send: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection), listen: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection), @@ -37,7 +37,7 @@ extension Connection { #if DEBUG extension Connection { public static let failing = Connection( - isAuthenticated: { fatalError("Not implemented") }, + isAuthenticated: .failing, getPartner: .failing, send: .failing, listen: .failing, diff --git a/Sources/ElixxirDAppsSDK/ConnectionAuthStatusProvider.swift b/Sources/ElixxirDAppsSDK/ConnectionAuthStatusProvider.swift new file mode 100644 index 00000000..d42e78f3 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/ConnectionAuthStatusProvider.swift @@ -0,0 +1,33 @@ +import Bindings + +public struct ConnectionAuthStatusProvider { + public var isAuthenticated: () -> Bool + + public func callAsFunction() -> Bool { + isAuthenticated() + } +} + +extension ConnectionAuthStatusProvider { + public static func live( + bindingsConnection: BindingsConnection + ) -> ConnectionAuthStatusProvider { + ConnectionAuthStatusProvider { false } + } + + public static func live( + bindingsAuthenticatedConnection: BindingsAuthenticatedConnection + ) -> ConnectionAuthStatusProvider { + ConnectionAuthStatusProvider( + isAuthenticated: bindingsAuthenticatedConnection.isAuthenticated + ) + } +} + +#if DEBUG +extension ConnectionAuthStatusProvider { + public static let failing = ConnectionAuthStatusProvider { + fatalError("Not implemented") + } +} +#endif -- GitLab