import Bindings import XCTestDynamicOverlay public struct MessengerResumeBackup { public enum Error: Swift.Error, Equatable { case isRunning case notConnected case notLoggedIn } public var run: () throws -> Void public func callAsFunction() throws { try run() } } extension MessengerResumeBackup { public static func live(_ env: MessengerEnvironment) -> MessengerResumeBackup { MessengerResumeBackup { guard env.backup()?.isRunning() != true else { throw Error.isRunning } guard let e2e = env.e2e() else { throw Error.notConnected } guard let ud = env.ud() else { throw Error.notLoggedIn } let backup = try env.resumeBackup( e2eId: e2e.getId(), udId: ud.getId(), callback: env.backupCallbacks.registered() ) env.backup.set(backup) } } } extension MessengerResumeBackup { public static let unimplemented = MessengerResumeBackup( run: XCTUnimplemented("\(Self.self)") ) }