mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Changed the min OS version to iOS 13.0 (support for 'Identifiable') Removed the alternate approaches to fetching the userKeyPair and userPublicKeyHexString (no consistently routed through the caching method) Migrated the 'OWSIdentityManager' logic to use the new 'Identity' type Added the 'Setting' table and got the pattern working fairly nicely (unfortunately there isn't a good way to avoid key collision without proper enums) Updated the SessionSnodeKit to migration it's data from YDB to GRDB Updated the SessionSnodeKit to use GRDB throughout it's logic
139 lines
3.9 KiB
Objective-C
139 lines
3.9 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) id<ProfileManagerProtocol> profileManager;
|
|
@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)initWithProfileManager:(id<ProfileManagerProtocol>)profileManager
|
|
primaryStorage:(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;
|
|
}
|
|
|
|
_profileManager = profileManager;
|
|
_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
|