Newer
Older
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 authHandler = AuthCallbackHandler.live(
messenger: messenger,
handleRequest: .live(db: dbManager.getDB, now: Date.init),
handleConfirm: .live(db: dbManager.getDB),
handleReset: .live(db: dbManager.getDB)
)
let mainQueue = DispatchQueue.main.eraseToAnyScheduler()
let bgQueue = DispatchQueue.global(qos: .background).eraseToAnyScheduler()
let contactEnvironment = ContactEnvironment(
messenger: messenger,
db: dbManager.getDB,
mainQueue: mainQueue,
bgQueue: bgQueue,
ContactLookupEnvironment(
messenger: messenger,
mainQueue: mainQueue,
bgQueue: bgQueue
)
sendRequest: {
SendRequestEnvironment(
messenger: messenger,
db: dbManager.getDB,
mainQueue: mainQueue,
bgQueue: bgQueue
)
VerifyContactEnvironment(
messenger: messenger,
mainQueue: mainQueue,
bgQueue: bgQueue
)
confirmRequest: {
ConfirmRequestEnvironment(
messenger: messenger,
db: dbManager.getDB,
mainQueue: mainQueue,
bgQueue: bgQueue
)
},
checkAuth: {
CheckContactAuthEnvironment(
messenger: messenger,
mainQueue: mainQueue,
bgQueue: bgQueue
)
ChatEnvironment(
messenger: messenger,
db: dbManager.getDB,
sendMessage: .live(
messenger: messenger,
db: dbManager.getDB,
now: Date.init
),
mainQueue: mainQueue,
bgQueue: bgQueue
)
dbManager: dbManager,
messenger: messenger,
authHandler: authHandler,
messageListener: .live(
messenger: messenger,
db: dbManager.getDB
),
backupStorage: backupStorage,
mainQueue: mainQueue,
bgQueue: bgQueue,
welcome: {
WelcomeEnvironment(
messenger: messenger,
mainQueue: mainQueue,
RestoreEnvironment(
messenger: messenger,
mainQueue: mainQueue,
bgQueue: bgQueue
)
bgQueue: bgQueue,
register: {
RegisterEnvironment(
messenger: messenger,
db: dbManager.getDB,
now: Date.init,
contact: { contactEnvironment },
myContact: {
MyContactEnvironment(
messenger: messenger,
db: dbManager.getDB,
mainQueue: mainQueue,
bgQueue: bgQueue
)
UserSearchEnvironment(
messenger: messenger,
mainQueue: mainQueue,
BackupEnvironment(
messenger: messenger,
db: dbManager.getDB,
backupStorage: backupStorage,
mainQueue: mainQueue,
bgQueue: bgQueue
)