Skip to content
Snippets Groups Projects
Select Git revision
  • 9dcf1f2dab75668671a5f989a7ce2c77421673c6
  • main default protected
  • development
  • integration
  • v1.1.5
  • v1.1.4
  • v1.1.3
  • v1.1.2
  • v1.1.1
  • v1.1.0
  • v1.0.0
11 results

SingleUseSendReport.swift

Blame
  • 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)")
      )
    }