diff --git a/Sources/ElixxirDAppsSDK/Functors/InitializeBackup.swift b/Sources/ElixxirDAppsSDK/Functors/InitializeBackup.swift new file mode 100644 index 0000000000000000000000000000000000000000..735de567642ff7a83d1aa71cc3943f4a74ea52a8 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Functors/InitializeBackup.swift @@ -0,0 +1,41 @@ +import Bindings +import XCTestDynamicOverlay + +public struct InitializeBackup { + public var run: (Int, Int, String, UpdateBackupFunc) throws -> Backup + + public func callAsFunction( + e2eId: Int, + udId: Int, + password: String, + callback: UpdateBackupFunc + ) throws -> Backup { + try run(e2eId, udId, password, callback) + } +} + +extension InitializeBackup { + public static let live = InitializeBackup { e2eId, udId, password, callback in + var error: NSError? + let bindingsBackup = BindingsInitializeBackup( + e2eId, + udId, + password, + callback.makeBindingsUpdateBackupFunc(), + &error + ) + if let error = error { + throw error + } + guard let bindingsBackup = bindingsBackup else { + fatalError("BindingsInitializeBackup returned `nil` without providing error") + } + return .live(bindingsBackup) + } +} + +extension InitializeBackup { + public static let unimplemented = InitializeBackup( + run: XCTUnimplemented("\(Self.self)") + ) +}