Skip to content
Snippets Groups Projects
MessengerEnvironment.swift 2.44 KiB
Newer Older
import Foundation
import XXClient
import XCTestDynamicOverlay

Dariusz Rybicki's avatar
Dariusz Rybicki committed
public struct MessengerEnvironment {
Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public var cMix: Stored<CMix?>
  public var downloadNDF: DownloadAndVerifySignedNdf
Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public var e2e: Stored<E2E?>
Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public var fileManager: MessengerFileManager
  public var generateSecret: GenerateSecret
  public var getCMixParams: GetCMixParams
  public var getE2EParams: GetE2EParams
  public var isRegisteredWithUD: IsRegisteredWithUD
  public var loadCMix: LoadCMix
  public var login: Login
  public var ndfEnvironment: NDFEnvironment
  public var newCMix: NewCMix
  public var newOrLoadUd: NewOrLoadUd
  public var passwordStorage: PasswordStorage
  public var sleep: (TimeInterval) -> Void
  public var storageDir: String
Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public var ud: Stored<UserDiscovery?>
  public var udAddress: String?
  public var udCert: Data?
  public var udContact: Data?
Dariusz Rybicki's avatar
Dariusz Rybicki committed
extension MessengerEnvironment {
  public static let defaultStorageDir = FileManager.default
    .urls(for: .applicationSupportDirectory, in: .userDomainMask)
    .first!
    .appendingPathComponent("xx.network.client")
    .path

Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public static func live() -> MessengerEnvironment {
    MessengerEnvironment(
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      cMix: .inMemory(),
      downloadNDF: .live,
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      e2e: .inMemory(),
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      fileManager: .live(),
      generateSecret: .live,
      getCMixParams: .liveDefault,
      getE2EParams: .liveDefault,
      isRegisteredWithUD: .live,
      loadCMix: .live,
      login: .live,
      ndfEnvironment: .mainnet,
      newCMix: .live,
      newOrLoadUd: .live,
      passwordStorage: .keychain,
      sleep: { Thread.sleep(forTimeInterval: $0) },
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      storageDir: MessengerEnvironment.defaultStorageDir,
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      ud: .inMemory(),
      udAddress: nil,
      udCert: nil,
      udContact: nil
    )
  }
Dariusz Rybicki's avatar
Dariusz Rybicki committed
extension MessengerEnvironment {
  public static let unimplemented = MessengerEnvironment(
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    cMix: .unimplemented(),
    downloadNDF: .unimplemented,
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    e2e: .unimplemented(),
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    fileManager: .unimplemented,
    generateSecret: .unimplemented,
    getCMixParams: .unimplemented,
    getE2EParams: .unimplemented,
    isRegisteredWithUD: .unimplemented,
    loadCMix: .unimplemented,
    login: .unimplemented,
    ndfEnvironment: .unimplemented,
    newCMix: .unimplemented,
    newOrLoadUd: .unimplemented,
    passwordStorage: .unimplemented,
    sleep: XCTUnimplemented("\(Self.self).sleep"),
    storageDir: "unimplemented",
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    ud: .unimplemented(),
    udAddress: nil,
    udCert: nil,
    udContact: nil