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

Dariusz Rybicki's avatar
Dariusz Rybicki committed
public struct MessengerEnvironment {
  public var authCallbacks: AuthCallbacksRegistry
  public var backup: Stored<Backup?>
  public var backupCallbacks: BackupCallbacksRegistry
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 getSingleUseParams: GetSingleUseParams
  public var initializeBackup: InitializeBackup
  public var isListeningForMessages: Stored<Bool>
  public var isRegisteredWithUD: IsRegisteredWithUD
  public var loadCMix: LoadCMix
Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public var logger: MessengerLogger
  public var login: Login
  public var lookupUD: LookupUD
  public var messageListeners: ListenersRegistry
  public var multiLookupUD: MultiLookupUD
  public var ndfEnvironment: NDFEnvironment
  public var newCMix: NewCMix
  public var newCMixFromBackup: NewCMixFromBackup
  public var newOrLoadUd: NewOrLoadUd
  public var newUdManagerFromBackup: NewUdManagerFromBackup
  public var passwordStorage: PasswordStorage
  public var registerForNotifications: RegisterForNotifications
  public var registerLogWriter: RegisterLogWriter
  public var resumeBackup: ResumeBackup
  public var searchUD: SearchUD
  public var setLogLevel: SetLogLevel
  public var sleep: (TimeInterval) -> Void
  public var storageDir: String
Dariusz Rybicki's avatar
Dariusz Rybicki committed
  public var ud: Stored<UserDiscovery?>
  public var udEnvironment: UDEnvironment?
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 {
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    MessengerEnvironment(
      authCallbacks: .live(),
      backup: .inMemory(),
      backupCallbacks: .live(),
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,
      getSingleUseParams: .liveDefault,
      initializeBackup: .live,
      isListeningForMessages: .inMemory(false),
      isRegisteredWithUD: .live,
      loadCMix: .live,
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      logger: .live(),
      login: .live,
      lookupUD: .live,
      messageListeners: .live(),
      multiLookupUD: .live(),
      ndfEnvironment: .mainnet,
      newCMix: .live,
      newCMixFromBackup: .live,
      newOrLoadUd: .live,
      newUdManagerFromBackup: .live,
      passwordStorage: .keychain,
      registerForNotifications: .live,
      registerLogWriter: .live,
      resumeBackup: .live,
      searchUD: .live,
      setLogLevel: .live,
      sleep: { Thread.sleep(forTimeInterval: $0) },
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      storageDir: MessengerEnvironment.defaultStorageDir,
Dariusz Rybicki's avatar
Dariusz Rybicki committed
      ud: .inMemory(),
      udEnvironment: nil
Dariusz Rybicki's avatar
Dariusz Rybicki committed
extension MessengerEnvironment {
  public static let unimplemented = MessengerEnvironment(
    authCallbacks: .unimplemented,
    backup: .unimplemented(),
    backupCallbacks: .unimplemented,
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,
    getSingleUseParams: .unimplemented,
    initializeBackup: .unimplemented,
    isListeningForMessages: .unimplemented(placeholder: false),
    isRegisteredWithUD: .unimplemented,
    loadCMix: .unimplemented,
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    logger: .unimplemented,
    login: .unimplemented,
    lookupUD: .unimplemented,
    messageListeners: .unimplemented,
    multiLookupUD: .unimplemented,
    ndfEnvironment: .unimplemented,
    newCMix: .unimplemented,
    newCMixFromBackup: .unimplemented,
    newOrLoadUd: .unimplemented,
    newUdManagerFromBackup: .unimplemented,
    passwordStorage: .unimplemented,
    registerForNotifications: .unimplemented,
    registerLogWriter: .unimplemented,
    resumeBackup: .unimplemented,
    searchUD: .unimplemented,
    setLogLevel: .unimplemented,
    sleep: XCTUnimplemented("\(Self.self).sleep"),
    storageDir: "unimplemented",
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    ud: .unimplemented(),
    udEnvironment: nil