diff --git a/Sources/ElixxirDAppsSDK/Functors/NewUdManagerFromBackup.swift b/Sources/ElixxirDAppsSDK/Functors/NewUdManagerFromBackup.swift new file mode 100644 index 0000000000000000000000000000000000000000..a167a0846fe571c81ce60bcd8d7a033c81e9f306 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Functors/NewUdManagerFromBackup.swift @@ -0,0 +1,43 @@ +import Bindings +import XCTestDynamicOverlay + +public struct NewUdManagerFromBackup { + public var run: (Int, UdNetworkStatus, Fact, Fact) throws -> UserDiscovery + + public func callAsFunction( + e2eId: Int, + follower: UdNetworkStatus, + email: Fact, + phone: Fact + ) throws -> UserDiscovery { + try run(e2eId, follower, email, phone) + } +} + +extension NewUdManagerFromBackup { + public static let live = NewUdManagerFromBackup { + e2eId, follower, email, phone in + + var error: NSError? + let bindingsUD = BindingsNewUdManagerFromBackup( + e2eId, + follower.makeBindingsUdNetworkStatus(), + try email.encode(), + try phone.encode(), + &error + ) + if let error = error { + throw error + } + guard let bindingsUD = bindingsUD else { + fatalError("BindingsNewUdManagerFromBackup returned `nil` without providing error") + } + return .live(bindingsUD) + } +} + +extension NewUdManagerFromBackup { + public static let unimplemented = NewUdManagerFromBackup( + run: XCTUnimplemented("\(Self.self)") + ) +}