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.
		
		
		
		
		
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Swift
		
	
| // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | |
| 
 | |
| import Foundation
 | |
| import SessionUtilitiesKit
 | |
| import SignalUtilitiesKit
 | |
| import SignalCoreKit
 | |
| 
 | |
| public class AppEnvironment {
 | |
| 
 | |
|     private static var _shared: AppEnvironment = AppEnvironment()
 | |
| 
 | |
|     public class var shared: AppEnvironment {
 | |
|         get { return _shared }
 | |
|         set {
 | |
|             guard SNUtilitiesKit.isRunningTests else {
 | |
|                 owsFailDebug("Can only switch environments in tests.")
 | |
|                 return
 | |
|             }
 | |
| 
 | |
|             _shared = newValue
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public var callManager: SessionCallManager
 | |
|     public var notificationPresenter: NotificationPresenter
 | |
|     public var pushRegistrationManager: PushRegistrationManager
 | |
|     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?
 | |
| 
 | |
|     public var userNotificationActionHandler: UserNotificationActionHandler {
 | |
|         return _userNotificationActionHandler as! UserNotificationActionHandler
 | |
|     }
 | |
| 
 | |
|     private init() {
 | |
|         self.callManager = SessionCallManager()
 | |
|         self.notificationPresenter = NotificationPresenter()
 | |
|         self.pushRegistrationManager = PushRegistrationManager()
 | |
|         self._userNotificationActionHandler = UserNotificationActionHandler()
 | |
|         self.fileLogger = DDFileLogger()
 | |
|         
 | |
|         SwiftSingletons.register(self)
 | |
|     }
 | |
| 
 | |
|     public func setup() {
 | |
|         // Hang certain singletons on Environment too.
 | |
|         Environment.shared?.callManager.mutate {
 | |
|             $0 = callManager
 | |
|         }
 | |
|         Environment.shared?.notificationsManager.mutate {
 | |
|             $0 = notificationPresenter
 | |
|         }
 | |
|         setupLogFiles()
 | |
|     }
 | |
|     
 | |
|     private func setupLogFiles() {
 | |
|         fileLogger.rollingFrequency = kDayInterval // Refresh everyday
 | |
|         fileLogger.logFileManager.maximumNumberOfLogFiles = 3 // Save 3 days' log files
 | |
|         DDLog.add(fileLogger)
 | |
|     }
 | |
| }
 |