mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Swift
		
	
| //
 | |
| //  Copyright (c) 2019 Open Whisper Systems. All rights reserved.
 | |
| //
 | |
| 
 | |
| import Foundation
 | |
| import SignalUtilitiesKit
 | |
| import SignalUtilitiesKit
 | |
| 
 | |
| @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 accountManager: AccountManager
 | |
|     
 | |
|     @objc
 | |
|     public var callManager: SessionCallManager
 | |
| 
 | |
|     @objc
 | |
|     public var notificationPresenter: NotificationPresenter
 | |
| 
 | |
|     @objc
 | |
|     public var pushRegistrationManager: PushRegistrationManager
 | |
| 
 | |
|     @objc
 | |
|     public var backup: OWSBackup
 | |
|     
 | |
|     @objc
 | |
|     public var fileLogger: DDFileLogger
 | |
| 
 | |
|     // Stored properties cannot be marked as `@available`, only classes and functions.
 | |
|     // Instead, store a private `Any` and wrap it with a public `@available` getter
 | |
|     private var _userNotificationActionHandler: Any?
 | |
| 
 | |
|     @objc
 | |
|     public var userNotificationActionHandler: UserNotificationActionHandler {
 | |
|         return _userNotificationActionHandler as! UserNotificationActionHandler
 | |
|     }
 | |
| 
 | |
|     @objc
 | |
|     public var backupLazyRestore: BackupLazyRestore
 | |
| 
 | |
|     private override init() {
 | |
|         self.accountManager = AccountManager()
 | |
|         self.callManager = SessionCallManager()
 | |
|         self.notificationPresenter = NotificationPresenter()
 | |
|         self.pushRegistrationManager = PushRegistrationManager()
 | |
|         self.backup = OWSBackup()
 | |
|         self.backupLazyRestore = BackupLazyRestore()
 | |
|         self._userNotificationActionHandler = UserNotificationActionHandler()
 | |
|         self.fileLogger = DDFileLogger()
 | |
| 
 | |
|         super.init()
 | |
| 
 | |
|         SwiftSingletons.register(self)
 | |
|     }
 | |
| 
 | |
|     @objc
 | |
|     public func setup() {
 | |
|         // Hang certain singletons on SSKEnvironment too.
 | |
|         SSKEnvironment.shared.notificationsManager = notificationPresenter
 | |
|         setupLogFiles()
 | |
|     }
 | |
|     
 | |
|     private func setupLogFiles() {
 | |
|         fileLogger.rollingFrequency = kDayInterval // Refresh everyday
 | |
|         fileLogger.logFileManager.maximumNumberOfLogFiles = 3 // Save 3 days' log files
 | |
|         DDLog.add(fileLogger)
 | |
|     }
 | |
| }
 |