import Foundation import XCTestDynamicOverlay import XXClient public struct MessengerLookupContacts { public enum Error: Swift.Error, Equatable { case notConnected case notLoggedIn } public var run: ([Data]) throws -> UdMultiLookupCallback.Result public func callAsFunction(ids: [Data]) throws -> UdMultiLookupCallback.Result { try run(ids) } } extension MessengerLookupContacts { public static func live(_ env: MessengerEnvironment) -> MessengerLookupContacts { MessengerLookupContacts { ids in guard let e2e = env.e2e() else { throw Error.notConnected } guard let ud = env.ud() else { throw Error.notLoggedIn } var callbackResult: UdMultiLookupCallback.Result! let semaphore = DispatchSemaphore(value: 0) _ = try env.multiLookupUD( params: MultiLookupUD.Params( e2eId: e2e.getId(), udContact: try ud.getContact(), lookupIds: ids, singleRequestParams: env.getSingleUseParams() ), callback: UdMultiLookupCallback { result in callbackResult = result semaphore.signal() } ) semaphore.wait() return callbackResult } } } extension MessengerLookupContacts { public static let unimplemented = MessengerLookupContacts( run: XCTUnimplemented("\(Self.self)") ) }