Select Git revision
MessengerLookupContacts.swift 1.34 KiB
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)")
)
}