From e5f052f347177c6670d2f6f68980fd9face942f6 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Thu, 28 Jul 2022 22:00:16 +0100 Subject: [PATCH] Add LoadOrNewUserDiscovery functor --- .../Functors/LoadOrNewUserDiscovery.swift | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Sources/ElixxirDAppsSDK/Functors/LoadOrNewUserDiscovery.swift diff --git a/Sources/ElixxirDAppsSDK/Functors/LoadOrNewUserDiscovery.swift b/Sources/ElixxirDAppsSDK/Functors/LoadOrNewUserDiscovery.swift new file mode 100644 index 00000000..f1817eb0 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Functors/LoadOrNewUserDiscovery.swift @@ -0,0 +1,43 @@ +import Bindings +import XCTestDynamicOverlay + +public struct LoadOrNewUserDiscovery { + public var run: (Int, UdNetworkStatus, String, Data) throws -> UserDiscovery + + public func callAsFunction( + e2eId: Int, + follower: UdNetworkStatus, + username: String, + registrationValidationSignature: Data + ) throws -> UserDiscovery { + try run(e2eId, follower, username, registrationValidationSignature) + } +} + +extension LoadOrNewUserDiscovery { + public static let live = LoadOrNewUserDiscovery { + e2eId, follower, username, registrationValidationSignature in + + var error: NSError? + let bindingsUD = BindingsLoadOrNewUserDiscovery( + e2eId, + follower.makeBindingsUdNetworkStatus(), + username, + registrationValidationSignature, + &error + ) + if let error = error { + throw error + } + guard let bindingsUD = bindingsUD else { + fatalError("BindingsLoadOrNewUserDiscovery returned `nil` without providing error") + } + return .live(bindingsUD) + } +} + +extension LoadOrNewUserDiscovery { + public static let unimplemented = LoadOrNewUserDiscovery( + run: XCTUnimplemented("\(Self.self)") + ) +} -- GitLab