Select Git revision
messages.go
MessengerLookupContact.swift 1.26 KiB
import Foundation
import XCTestDynamicOverlay
import XXClient
public struct MessengerLookupContact {
public enum Error: Swift.Error, Equatable {
case notConnected
case notLoggedIn
}
public var run: (Data) throws -> Contact
public func callAsFunction(id: Data) throws -> Contact {
try run(id)
}
}
extension MessengerLookupContact {
public static func live(_ env: MessengerEnvironment) -> MessengerLookupContact {
MessengerLookupContact { id in
guard let e2e = env.e2e() else {
throw Error.notConnected
}
guard let ud = env.ud() else {
throw Error.notLoggedIn
}
var result: Result<Contact, NSError>!
let semaphore = DispatchSemaphore(value: 0)
_ = try env.lookupUD(
params: LookupUD.Params(
e2eId: e2e.getId(),
udContact: try ud.getContact(),
lookupId: id,
singleRequestParamsJSON: env.getSingleUseParams()
),
callback: UdLookupCallback { lookupResult in
result = lookupResult
semaphore.signal()
}
)
semaphore.wait()
return try result.get()
}
}
}
extension MessengerLookupContact {
public static let unimplemented = MessengerLookupContact(
run: XCTUnimplemented("\(Self.self)")
)
}