diff --git a/Sources/ElixxirDAppsSDK/Functors/LoadOrNewUserDiscovery.swift b/Sources/ElixxirDAppsSDK/Functors/LoadOrNewUserDiscovery.swift deleted file mode 100644 index 95a7371a0321974e1282fb99acb3137bc3fa4139..0000000000000000000000000000000000000000 --- a/Sources/ElixxirDAppsSDK/Functors/LoadOrNewUserDiscovery.swift +++ /dev/null @@ -1,43 +0,0 @@ -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)") - ) -} diff --git a/Sources/ElixxirDAppsSDK/Functors/NewOrLoadUd.swift b/Sources/ElixxirDAppsSDK/Functors/NewOrLoadUd.swift new file mode 100644 index 0000000000000000000000000000000000000000..3b1599751d57555cbf2b419e37e1d368834c1884 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Functors/NewOrLoadUd.swift @@ -0,0 +1,67 @@ +import Bindings +import XCTestDynamicOverlay + +public struct NewOrLoadUd { + public struct Params { + public init( + e2eId: Int, + follower: UdNetworkStatus, + username: String?, + registrationValidationSignature: Data?, + cert: Data, + contactFile: Data, + address: String + ) { + self.e2eId = e2eId + self.follower = follower + self.username = username + self.registrationValidationSignature = registrationValidationSignature + self.cert = cert + self.contactFile = contactFile + self.address = address + } + + public var e2eId: Int + public var follower: UdNetworkStatus + public var username: String? + public var registrationValidationSignature: Data? + public var cert: Data + public var contactFile: Data + public var address: String + } + + public var run: (Params) throws -> UserDiscovery + + public func callAsFunction(_ params: Params) throws -> UserDiscovery { + try run(params) + } +} + +extension NewOrLoadUd { + public static let live = NewOrLoadUd { params in + var error: NSError? + let bindingsUD = BindingsNewOrLoadUd( + params.e2eId, + params.follower.makeBindingsUdNetworkStatus(), + params.username, + params.registrationValidationSignature, + params.cert, + params.contactFile, + params.address, + &error + ) + if let error = error { + throw error + } + guard let bindingsUD = bindingsUD else { + fatalError("BindingsNewOrLoadUd returned `nil` without providing error") + } + return .live(bindingsUD) + } +} + +extension NewOrLoadUd { + public static let unimplemented = NewOrLoadUd( + run: XCTUnimplemented("\(Self.self)") + ) +}