session-ios/Signal/src/environment/AppEnvironment.swift
2018-10-15 15:51:43 -04:00

107 lines
3.3 KiB
Swift

//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
import Foundation
import SignalServiceKit
import SignalMessaging
@objc public class AppEnvironment: NSObject {
private static var _shared: AppEnvironment = AppEnvironment()
@objc
public class var shared: AppEnvironment {
get {
return _shared
}
set {
guard CurrentAppContext().isRunningTests else {
owsFailDebug("Can only switch environments in tests.")
return
}
_shared = newValue
}
}
@objc
public var callMessageHandler: WebRTCCallMessageHandler
@objc
public var callService: CallService
@objc
public var outboundCallInitiator: OutboundCallInitiator
@objc
public var messageFetcherJob: MessageFetcherJob
@objc
public var notificationsManager: NotificationsManager
@objc
public var accountManager: AccountManager
@objc
public var callNotificationsAdapter: CallNotificationsAdapter
@objc
public var pushRegistrationManager: PushRegistrationManager
@objc
public init(callMessageHandler: WebRTCCallMessageHandler,
callService: CallService,
outboundCallInitiator: OutboundCallInitiator,
messageFetcherJob: MessageFetcherJob,
notificationsManager: NotificationsManager,
accountManager: AccountManager,
callNotificationsAdapter: CallNotificationsAdapter,
pushRegistrationManager: PushRegistrationManager) {
self.callMessageHandler = callMessageHandler
self.callService = callService
self.outboundCallInitiator = outboundCallInitiator
self.messageFetcherJob = messageFetcherJob
self.notificationsManager = notificationsManager
self.accountManager = accountManager
self.callNotificationsAdapter = callNotificationsAdapter
self.pushRegistrationManager = pushRegistrationManager
super.init()
SwiftSingletons.register(self)
}
private override init() {
let accountManager = AccountManager()
let notificationsManager = NotificationsManager()
let callNotificationsAdapter = CallNotificationsAdapter()
let callService = CallService()
let callMessageHandler = WebRTCCallMessageHandler()
let outboundCallInitiator = OutboundCallInitiator()
let messageFetcherJob = MessageFetcherJob()
let pushRegistrationManager = PushRegistrationManager()
self.callMessageHandler = callMessageHandler
self.callService = callService
self.outboundCallInitiator = outboundCallInitiator
self.messageFetcherJob = messageFetcherJob
self.notificationsManager = notificationsManager
self.accountManager = accountManager
self.callNotificationsAdapter = callNotificationsAdapter
self.pushRegistrationManager = pushRegistrationManager
super.init()
SwiftSingletons.register(self)
}
@objc
public func setup() {
callService.createCallUIAdapter()
// Hang certain singletons on SSKEnvironment too.
SSKEnvironment.shared.notificationsManager = notificationsManager
SSKEnvironment.shared.callMessageHandler = callMessageHandler
}
}