diff --git a/Sources/ElixxirDAppsSDK/Login.swift b/Sources/ElixxirDAppsSDK/Login.swift index e89fe54d7ddba5892170fbfcbdb030d53e3b3be0..ec82489280e8c5e03c36533a368e2a5920705368 100644 --- a/Sources/ElixxirDAppsSDK/Login.swift +++ b/Sources/ElixxirDAppsSDK/Login.swift @@ -2,33 +2,46 @@ import Bindings import XCTestDynamicOverlay public struct Login { - public var run: (Int, AuthCallbacks?, Data, Data) throws -> E2E + public var run: (Bool, Int, AuthCallbacks?, Data, Data) throws -> E2E public func callAsFunction( + ephemeral: Bool, cmixId: Int, authCallbacks: AuthCallbacks? = nil, identity: Data, e2eParamsJSON: Data ) throws -> E2E { - try run(cmixId, authCallbacks, identity, e2eParamsJSON) + try run(ephemeral, cmixId, authCallbacks, identity, e2eParamsJSON) } } extension Login { - public static let live = Login { cmixId, authCallbacks, identity, e2eParamsJSON in + public static let live = Login { ephemeral, cmixId, authCallbacks, identity, e2eParamsJSON in var error: NSError? - let bindingsE2E = BindingsLogin( - cmixId, - authCallbacks?.makeBindingsAuthCallbacks(), - identity, - e2eParamsJSON, - &error - ) + let bindingsE2E: BindingsE2e? + if ephemeral { + bindingsE2E = BindingsLogin( + cmixId, + authCallbacks?.makeBindingsAuthCallbacks(), + identity, + e2eParamsJSON, + &error + ) + } else { + bindingsE2E = BindingsLoginEphemeral( + cmixId, + authCallbacks?.makeBindingsAuthCallbacks(), + identity, + e2eParamsJSON, + &error + ) + } if let error = error { throw error } guard let bindingsE2E = bindingsE2E else { - fatalError("BindingsLogin returned `nil` without providing error") + let functionName = "BindingsLogin\(ephemeral ? "Ephemeral" : "")" + fatalError("\(functionName) returned `nil` without providing error") } return .live(bindingsE2E) }