Skip to content
Snippets Groups Projects
AppEnvironment+Live.swift 1.3 KiB
Newer Older
import AppCore
import Foundation
import HomeFeature
import LaunchFeature
import RegisterFeature
import RestoreFeature
import WelcomeFeature
import XXMessengerClient
import XXModels

extension AppEnvironment {
  static func live() -> AppEnvironment {
    let dbManager = DBManager.live()
    let messengerEnv = MessengerEnvironment.live()
    let messenger = Messenger.live(messengerEnv)
    let mainQueue = DispatchQueue.main.eraseToAnyScheduler()
    let bgQueue = DispatchQueue.global(qos: .background).eraseToAnyScheduler()

    return AppEnvironment(
      launch: {
        LaunchEnvironment(
          dbManager: dbManager,
          messenger: messenger,
          mainQueue: mainQueue,
          bgQueue: bgQueue,
          welcome: {
            WelcomeEnvironment(
              messenger: messenger,
              mainQueue: mainQueue,
              bgQueue: bgQueue
            )
          },
          restore: {
            RestoreEnvironment()
          },
          register: {
            RegisterEnvironment(
              messenger: messenger,
              mainQueue: mainQueue,
              bgQueue: bgQueue
            )
          }
        )
      },
      home: {
        HomeEnvironment(
          messenger: messenger,
          mainQueue: mainQueue,
          bgQueue: bgQueue