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.
		
		
		
		
		
			
		
			
				
	
	
		
			136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Objective-C
		
	
| //
 | |
| //  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "SSKEnvironment.h"
 | |
| #import "AppContext.h"
 | |
| #import "OWSPrimaryStorage.h"
 | |
| 
 | |
| NS_ASSUME_NONNULL_BEGIN
 | |
| 
 | |
| static SSKEnvironment *sharedSSKEnvironment;
 | |
| 
 | |
| @interface SSKEnvironment ()
 | |
| 
 | |
| @property (nonatomic) OWSPrimaryStorage *primaryStorage;
 | |
| @property (nonatomic) TSAccountManager *tsAccountManager;
 | |
| @property (nonatomic) OWSDisappearingMessagesJob *disappearingMessagesJob;
 | |
| @property (nonatomic) OWSReadReceiptManager *readReceiptManager;
 | |
| @property (nonatomic) OWSOutgoingReceiptManager *outgoingReceiptManager;
 | |
| @property (nonatomic) id<SSKReachabilityManager> reachabilityManager;
 | |
| @property (nonatomic) id<OWSTypingIndicators> typingIndicators;
 | |
| 
 | |
| @end
 | |
| 
 | |
| #pragma mark -
 | |
| 
 | |
| @implementation SSKEnvironment
 | |
| 
 | |
| @synthesize notificationsManager = _notificationsManager;
 | |
| @synthesize objectReadWriteConnection = _objectReadWriteConnection;
 | |
| @synthesize sessionStoreDBConnection = _sessionStoreDBConnection;
 | |
| @synthesize migrationDBConnection = _migrationDBConnection;
 | |
| @synthesize analyticsDBConnection = _analyticsDBConnection;
 | |
| 
 | |
| - (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
 | |
|                       tsAccountManager:(TSAccountManager *)tsAccountManager
 | |
|                disappearingMessagesJob:(OWSDisappearingMessagesJob *)disappearingMessagesJob
 | |
|                     readReceiptManager:(OWSReadReceiptManager *)readReceiptManager
 | |
|                 outgoingReceiptManager:(OWSOutgoingReceiptManager *)outgoingReceiptManager
 | |
|                    reachabilityManager:(id<SSKReachabilityManager>)reachabilityManager
 | |
|                       typingIndicators:(id<OWSTypingIndicators>)typingIndicators
 | |
| {
 | |
|     self = [super init];
 | |
|     
 | |
|     if (!self) {
 | |
|         return self;
 | |
|     }
 | |
| 
 | |
|     _primaryStorage = primaryStorage;
 | |
|     _tsAccountManager = tsAccountManager;
 | |
|     _disappearingMessagesJob = disappearingMessagesJob;
 | |
|     _readReceiptManager = readReceiptManager;
 | |
|     _outgoingReceiptManager = outgoingReceiptManager;
 | |
|     _reachabilityManager = reachabilityManager;
 | |
|     _typingIndicators = typingIndicators;
 | |
| 
 | |
|     return self;
 | |
| }
 | |
| 
 | |
| + (instancetype)shared
 | |
| {
 | |
|     return sharedSSKEnvironment;
 | |
| }
 | |
| 
 | |
| + (void)setShared:(SSKEnvironment *)env
 | |
| {
 | |
|     sharedSSKEnvironment = env;
 | |
| }
 | |
| 
 | |
| + (void)clearSharedForTests
 | |
| {
 | |
|     sharedSSKEnvironment = nil;
 | |
| }
 | |
| 
 | |
| #pragma mark - Mutable Accessors
 | |
| 
 | |
| - (nullable id<NotificationsProtocol>)notificationsManager
 | |
| {
 | |
|     @synchronized(self) {
 | |
|         return _notificationsManager;
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (void)setNotificationsManager:(nullable id<NotificationsProtocol>)notificationsManager
 | |
| {
 | |
|     @synchronized(self) {
 | |
|         _notificationsManager = notificationsManager;
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (BOOL)isComplete
 | |
| {
 | |
|     return self.notificationsManager != nil;
 | |
| }
 | |
| 
 | |
| - (YapDatabaseConnection *)objectReadWriteConnection
 | |
| {
 | |
|     @synchronized(self) {
 | |
|         if (!_objectReadWriteConnection) {
 | |
|             _objectReadWriteConnection = self.primaryStorage.newDatabaseConnection;
 | |
|         }
 | |
|         return _objectReadWriteConnection;
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (YapDatabaseConnection *)sessionStoreDBConnection {
 | |
|     @synchronized(self) {
 | |
|         if (!_sessionStoreDBConnection) {
 | |
|             _sessionStoreDBConnection = self.primaryStorage.newDatabaseConnection;
 | |
|         }
 | |
|         return _sessionStoreDBConnection;
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (YapDatabaseConnection *)migrationDBConnection {
 | |
|     @synchronized(self) {
 | |
|         if (!_migrationDBConnection) {
 | |
|             _migrationDBConnection = self.primaryStorage.newDatabaseConnection;
 | |
|         }
 | |
|         return _migrationDBConnection;
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (YapDatabaseConnection *)analyticsDBConnection {
 | |
|     @synchronized(self) {
 | |
|         if (!_analyticsDBConnection) {
 | |
|             _analyticsDBConnection = self.primaryStorage.newDatabaseConnection;
 | |
|         }
 | |
|         return _analyticsDBConnection;
 | |
|     }
 | |
| }
 | |
| 
 | |
| @end
 | |
| 
 | |
| NS_ASSUME_NONNULL_END
 |