Skip to content
Snippets Groups Projects
MessengerLogIn.swift 1 KiB
Newer Older
import XXClient
import XCTestDynamicOverlay

Dariusz Rybicki's avatar
Dariusz Rybicki committed
public struct MessengerLogIn {
  public enum Error: Swift.Error, Equatable {
    case notLoaded
    case notConnected
  }

  public var run: () throws -> Void

  public func callAsFunction() throws {
    try run()
  }
}

Dariusz Rybicki's avatar
Dariusz Rybicki committed
extension MessengerLogIn {
  public static func live(_ env: MessengerEnvironment) -> MessengerLogIn {
    MessengerLogIn {
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      guard let cMix = env.cMix() else {
        throw Error.notLoaded
      }
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      guard let e2e = env.e2e() else {
        throw Error.notConnected
      }
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      env.ud.set(try env.newOrLoadUd(
        params: .init(
          e2eId: e2e.getId(),
          username: nil,
          registrationValidationSignature: nil,
          environment: env.udEnvironment ?? (try e2e.getUdEnvironmentFromNdf())
        ),
        follower: .init {
          cMix.networkFollowerStatus()
Dariusz Rybicki's avatar
Dariusz Rybicki committed
extension MessengerLogIn {
  public static let unimplemented = MessengerLogIn(
    run: XCTUnimplemented("\(Self.self)")