Move more singletons to SSKEnvironment.
This commit is contained in:
parent
6e3462c13f
commit
87836f506b
|
@ -1080,6 +1080,8 @@ static NSTimeInterval launchStartedAt;
|
||||||
|
|
||||||
[OWSBackup.sharedManager setup];
|
[OWSBackup.sharedManager setup];
|
||||||
|
|
||||||
|
[SSKEnvironment.shared.messageManager startObserving];
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
// Resume lazy restore.
|
// Resume lazy restore.
|
||||||
[OWSBackupLazyRestoreJob runAsync];
|
[OWSBackupLazyRestoreJob runAsync];
|
||||||
|
|
|
@ -55,7 +55,8 @@ typedef UITableViewCell *_Nonnull (^OWSTableCustomCellBlock)(void);
|
||||||
+ (UITableViewCell *)newCell;
|
+ (UITableViewCell *)newCell;
|
||||||
+ (void)configureCell:(UITableViewCell *)cell;
|
+ (void)configureCell:(UITableViewCell *)cell;
|
||||||
|
|
||||||
+ (OWSTableItem *)itemWithTitle:(NSString *)title actionBlock:(nullable OWSTableActionBlock)actionBlock;
|
+ (OWSTableItem *)itemWithTitle:(NSString *)title
|
||||||
|
actionBlock:(nullable OWSTableActionBlock)actionBlock NS_SWIFT_NAME(init(title:actionBlock:));
|
||||||
|
|
||||||
+ (OWSTableItem *)itemWithCustomCell:(UITableViewCell *)customCell
|
+ (OWSTableItem *)itemWithCustomCell:(UITableViewCell *)customCell
|
||||||
customRowHeight:(CGFloat)customRowHeight
|
customRowHeight:(CGFloat)customRowHeight
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
#import <SignalMessaging/OWSProfileManager.h>
|
#import <SignalMessaging/OWSProfileManager.h>
|
||||||
#import <SignalMessaging/SignalMessaging-Swift.h>
|
#import <SignalMessaging/SignalMessaging-Swift.h>
|
||||||
#import <SignalServiceKit/OWSBackgroundTask.h>
|
#import <SignalServiceKit/OWSBackgroundTask.h>
|
||||||
|
#import <SignalServiceKit/OWSBlockingManager.h>
|
||||||
|
#import <SignalServiceKit/OWSIdentityManager.h>
|
||||||
|
#import <SignalServiceKit/OWSMessageManager.h>
|
||||||
#import <SignalServiceKit/OWSStorage.h>
|
#import <SignalServiceKit/OWSStorage.h>
|
||||||
#import <SignalServiceKit/SSKEnvironment.h>
|
#import <SignalServiceKit/SSKEnvironment.h>
|
||||||
|
|
||||||
|
@ -42,14 +45,16 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
TSNetworkManager *networkManager = [[TSNetworkManager alloc] initDefault];
|
TSNetworkManager *networkManager = [[TSNetworkManager alloc] initDefault];
|
||||||
OWSContactsManager *contactsManager = [[OWSContactsManager alloc] initWithPrimaryStorage:primaryStorage];
|
OWSContactsManager *contactsManager = [[OWSContactsManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
ContactsUpdater *contactsUpdater = [ContactsUpdater new];
|
ContactsUpdater *contactsUpdater = [ContactsUpdater new];
|
||||||
OWSMessageSender *messageSender = [[OWSMessageSender alloc] initWithNetworkManager:networkManager
|
OWSMessageSender *messageSender = [[OWSMessageSender alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
primaryStorage:primaryStorage
|
|
||||||
contactsManager:contactsManager];
|
|
||||||
|
|
||||||
OWSProfileManager *profileManager = [[OWSProfileManager alloc] initWithPrimaryStorage:primaryStorage
|
OWSProfileManager *profileManager = [[OWSProfileManager alloc] initWithPrimaryStorage:primaryStorage
|
||||||
messageSender:messageSender
|
messageSender:messageSender
|
||||||
networkManager:networkManager];
|
networkManager:networkManager];
|
||||||
|
|
||||||
|
OWSMessageManager *messageManager = [[OWSMessageManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
|
OWSBlockingManager *blockingManager = [[OWSBlockingManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
|
OWSIdentityManager *identityManager = [[OWSIdentityManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
|
|
||||||
[Environment setShared:[[Environment alloc] initWithPreferences:preferences]];
|
[Environment setShared:[[Environment alloc] initWithPreferences:preferences]];
|
||||||
|
|
||||||
[SSKEnvironment setShared:[[SSKEnvironment alloc] initWithContactsManager:contactsManager
|
[SSKEnvironment setShared:[[SSKEnvironment alloc] initWithContactsManager:contactsManager
|
||||||
|
@ -57,7 +62,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
profileManager:profileManager
|
profileManager:profileManager
|
||||||
primaryStorage:primaryStorage
|
primaryStorage:primaryStorage
|
||||||
contactsUpdater:contactsUpdater
|
contactsUpdater:contactsUpdater
|
||||||
networkManager:networkManager]];
|
networkManager:networkManager
|
||||||
|
messageManager:messageManager
|
||||||
|
blockingManager:blockingManager
|
||||||
|
identityManager:identityManager]];
|
||||||
|
|
||||||
appSpecificSingletonBlock();
|
appSpecificSingletonBlock();
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
+ (NSString *)contactIdFromThreadId:(NSString *)threadId;
|
+ (NSString *)contactIdFromThreadId:(NSString *)threadId;
|
||||||
|
|
||||||
|
// This is only exposed for tests.
|
||||||
|
#ifdef DEBUG
|
||||||
|
+ (NSString *)threadIdFromContactId:(NSString *)contactId;
|
||||||
|
#endif
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|
|
@ -83,7 +83,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
return [SSKEnvironment.shared.contactsManager displayNameForPhoneIdentifier:self.contactIdentifier];
|
return [SSKEnvironment.shared.contactsManager displayNameForPhoneIdentifier:self.contactIdentifier];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
+ (NSString *)threadIdFromContactId:(NSString *)contactId {
|
+ (NSString *)threadIdFromContactId:(NSString *)contactId {
|
||||||
return [TSContactThreadPrefix stringByAppendingString:contactId];
|
return [TSContactThreadPrefix stringByAppendingString:contactId];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class OWSPrimaryStorage;
|
||||||
@class TSGroupModel;
|
@class TSGroupModel;
|
||||||
@class TSThread;
|
@class TSThread;
|
||||||
|
|
||||||
|
@ -13,6 +14,7 @@ extern NSString *const kNSNotificationName_BlockListDidChange;
|
||||||
@interface OWSBlockingManager : NSObject
|
@interface OWSBlockingManager : NSObject
|
||||||
|
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
|
||||||
|
|
||||||
+ (instancetype)sharedManager;
|
+ (instancetype)sharedManager;
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,6 @@ NSString *const kOWSBlockingManager_SyncedBlockedGroupIdsKey = @"kOWSBlockingMan
|
||||||
@interface OWSBlockingManager ()
|
@interface OWSBlockingManager ()
|
||||||
|
|
||||||
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
||||||
@property (nonatomic, readonly) OWSMessageSender *messageSender;
|
|
||||||
|
|
||||||
// We don't store the phone numbers as instances of PhoneNumber to avoid
|
// We don't store the phone numbers as instances of PhoneNumber to avoid
|
||||||
// consistency issues between clients, but these should all be valid e164
|
// consistency issues between clients, but these should all be valid e164
|
||||||
|
@ -47,24 +46,12 @@ NSString *const kOWSBlockingManager_SyncedBlockedGroupIdsKey = @"kOWSBlockingMan
|
||||||
|
|
||||||
+ (instancetype)sharedManager
|
+ (instancetype)sharedManager
|
||||||
{
|
{
|
||||||
static OWSBlockingManager *sharedMyManager = nil;
|
OWSAssertDebug(SSKEnvironment.shared.blockingManager);
|
||||||
static dispatch_once_t onceToken;
|
|
||||||
dispatch_once(&onceToken, ^{
|
|
||||||
sharedMyManager = [[self alloc] initDefault];
|
|
||||||
});
|
|
||||||
return sharedMyManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (instancetype)initDefault
|
return SSKEnvironment.shared.blockingManager;
|
||||||
{
|
|
||||||
OWSPrimaryStorage *primaryStorage = [OWSPrimaryStorage sharedManager];
|
|
||||||
OWSMessageSender *messageSender = SSKEnvironment.shared.messageSender;
|
|
||||||
|
|
||||||
return [self initWithPrimaryStorage:primaryStorage messageSender:messageSender];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||||
messageSender:(OWSMessageSender *)messageSender
|
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
|
|
||||||
|
@ -73,17 +60,11 @@ NSString *const kOWSBlockingManager_SyncedBlockedGroupIdsKey = @"kOWSBlockingMan
|
||||||
}
|
}
|
||||||
|
|
||||||
OWSAssertDebug(primaryStorage);
|
OWSAssertDebug(primaryStorage);
|
||||||
OWSAssertDebug(messageSender);
|
|
||||||
|
|
||||||
_dbConnection = primaryStorage.newDatabaseConnection;
|
_dbConnection = primaryStorage.newDatabaseConnection;
|
||||||
_messageSender = messageSender;
|
|
||||||
|
|
||||||
OWSSingletonAssert();
|
OWSSingletonAssert();
|
||||||
|
|
||||||
// Register this manager with the message sender.
|
|
||||||
// This is a circular dependency.
|
|
||||||
[messageSender setBlockingManager:self];
|
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,8 +81,14 @@ NSString *const kOWSBlockingManager_SyncedBlockedGroupIdsKey = @"kOWSBlockingMan
|
||||||
object:nil];
|
object:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
- (OWSMessageSender *)messageSender
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.messageSender);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.messageSender;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
|
||||||
- (BOOL)isThreadBlocked:(TSThread *)thread
|
- (BOOL)isThreadBlocked:(TSThread *)thread
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,6 +25,7 @@ extern const NSUInteger kIdentityKeyLength;
|
||||||
@interface OWSIdentityManager : NSObject <IdentityKeyStore>
|
@interface OWSIdentityManager : NSObject <IdentityKeyStore>
|
||||||
|
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
|
||||||
|
|
||||||
+ (instancetype)sharedManager;
|
+ (instancetype)sharedManager;
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,6 @@ NSString *const kNSNotificationName_IdentityStateDidChange = @"kNSNotificationNa
|
||||||
|
|
||||||
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
||||||
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
||||||
@property (nonatomic, readonly) OWSMessageSender *messageSender;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -68,24 +67,12 @@ NSString *const kNSNotificationName_IdentityStateDidChange = @"kNSNotificationNa
|
||||||
|
|
||||||
+ (instancetype)sharedManager
|
+ (instancetype)sharedManager
|
||||||
{
|
{
|
||||||
static OWSIdentityManager *sharedMyManager = nil;
|
OWSAssertDebug(SSKEnvironment.shared.identityManager);
|
||||||
static dispatch_once_t onceToken;
|
|
||||||
dispatch_once(&onceToken, ^{
|
|
||||||
sharedMyManager = [[self alloc] initDefault];
|
|
||||||
});
|
|
||||||
return sharedMyManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (instancetype)initDefault
|
return SSKEnvironment.shared.identityManager;
|
||||||
{
|
|
||||||
OWSPrimaryStorage *primaryStorage = [OWSPrimaryStorage sharedManager];
|
|
||||||
OWSMessageSender *messageSender = SSKEnvironment.shared.messageSender;
|
|
||||||
|
|
||||||
return [self initWithPrimaryStorage:primaryStorage messageSender:messageSender];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||||
messageSender:(OWSMessageSender *)messageSender
|
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
|
|
||||||
|
@ -94,12 +81,10 @@ NSString *const kNSNotificationName_IdentityStateDidChange = @"kNSNotificationNa
|
||||||
}
|
}
|
||||||
|
|
||||||
OWSAssertDebug(primaryStorage);
|
OWSAssertDebug(primaryStorage);
|
||||||
OWSAssertDebug(messageSender);
|
|
||||||
|
|
||||||
_primaryStorage = primaryStorage;
|
_primaryStorage = primaryStorage;
|
||||||
_dbConnection = primaryStorage.newDatabaseConnection;
|
_dbConnection = primaryStorage.newDatabaseConnection;
|
||||||
self.dbConnection.objectCacheEnabled = NO;
|
self.dbConnection.objectCacheEnabled = NO;
|
||||||
_messageSender = messageSender;
|
|
||||||
|
|
||||||
OWSSingletonAssert();
|
OWSSingletonAssert();
|
||||||
|
|
||||||
|
@ -113,6 +98,13 @@ NSString *const kNSNotificationName_IdentityStateDidChange = @"kNSNotificationNa
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (OWSMessageSender *)messageSender
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.messageSender);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.messageSender;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)observeNotifications
|
- (void)observeNotifications
|
||||||
{
|
{
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class OWSPrimaryStorage;
|
||||||
@class SSKProtoEnvelope;
|
@class SSKProtoEnvelope;
|
||||||
@class TSThread;
|
@class TSThread;
|
||||||
@class YapDatabaseReadWriteTransaction;
|
@class YapDatabaseReadWriteTransaction;
|
||||||
|
@ -15,11 +16,16 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
+ (instancetype)sharedManager;
|
+ (instancetype)sharedManager;
|
||||||
|
|
||||||
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
|
||||||
|
|
||||||
// processEnvelope: can be called from any thread.
|
// processEnvelope: can be called from any thread.
|
||||||
- (void)processEnvelope:(SSKProtoEnvelope *)envelope
|
- (void)processEnvelope:(SSKProtoEnvelope *)envelope
|
||||||
plaintextData:(NSData *_Nullable)plaintextData
|
plaintextData:(NSData *_Nullable)plaintextData
|
||||||
transaction:(YapDatabaseReadWriteTransaction *)transaction;
|
transaction:(YapDatabaseReadWriteTransaction *)transaction;
|
||||||
|
|
||||||
|
// This should be invoked by the main app when the app is ready.
|
||||||
|
- (void)startObserving;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|
|
@ -54,15 +54,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface OWSMessageManager ()
|
@interface OWSMessageManager ()
|
||||||
|
|
||||||
@property (nonatomic, readonly) id<OWSCallMessageHandler> callMessageHandler;
|
|
||||||
@property (nonatomic, readonly) id<ContactsManagerProtocol> contactsManager;
|
|
||||||
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
||||||
@property (nonatomic, readonly) OWSMessageSender *messageSender;
|
|
||||||
@property (nonatomic, readonly) OWSIncomingMessageFinder *incomingMessageFinder;
|
|
||||||
@property (nonatomic, readonly) OWSBlockingManager *blockingManager;
|
|
||||||
@property (nonatomic, readonly) OWSIdentityManager *identityManager;
|
|
||||||
@property (nonatomic, readonly) TSNetworkManager *networkManager;
|
|
||||||
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
||||||
|
@property (nonatomic, readonly) OWSIncomingMessageFinder *incomingMessageFinder;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -72,38 +66,12 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
+ (instancetype)sharedManager
|
+ (instancetype)sharedManager
|
||||||
{
|
{
|
||||||
static OWSMessageManager *sharedMyManager = nil;
|
OWSAssertDebug(SSKEnvironment.shared.messageManager);
|
||||||
static dispatch_once_t onceToken;
|
|
||||||
dispatch_once(&onceToken, ^{
|
return SSKEnvironment.shared.messageManager;
|
||||||
sharedMyManager = [[self alloc] initDefault];
|
|
||||||
});
|
|
||||||
return sharedMyManager;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initDefault
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||||
{
|
|
||||||
TSNetworkManager *networkManager = [TSNetworkManager sharedManager];
|
|
||||||
OWSPrimaryStorage *primaryStorage = [OWSPrimaryStorage sharedManager];
|
|
||||||
id<ContactsManagerProtocol> contactsManager = SSKEnvironment.shared.contactsManager;
|
|
||||||
id<OWSCallMessageHandler> callMessageHandler = SSKEnvironment.shared.callMessageHandler;
|
|
||||||
OWSIdentityManager *identityManager = [OWSIdentityManager sharedManager];
|
|
||||||
OWSMessageSender *messageSender = SSKEnvironment.shared.messageSender;
|
|
||||||
|
|
||||||
|
|
||||||
return [self initWithNetworkManager:networkManager
|
|
||||||
primaryStorage:primaryStorage
|
|
||||||
callMessageHandler:callMessageHandler
|
|
||||||
contactsManager:contactsManager
|
|
||||||
identityManager:identityManager
|
|
||||||
messageSender:messageSender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (instancetype)initWithNetworkManager:(TSNetworkManager *)networkManager
|
|
||||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
|
||||||
callMessageHandler:(id<OWSCallMessageHandler>)callMessageHandler
|
|
||||||
contactsManager:(id<ContactsManagerProtocol>)contactsManager
|
|
||||||
identityManager:(OWSIdentityManager *)identityManager
|
|
||||||
messageSender:(OWSMessageSender *)messageSender
|
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
|
|
||||||
|
@ -112,24 +80,57 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
}
|
}
|
||||||
|
|
||||||
_primaryStorage = primaryStorage;
|
_primaryStorage = primaryStorage;
|
||||||
_networkManager = networkManager;
|
|
||||||
_callMessageHandler = callMessageHandler;
|
|
||||||
_contactsManager = contactsManager;
|
|
||||||
_identityManager = identityManager;
|
|
||||||
_messageSender = messageSender;
|
|
||||||
|
|
||||||
_dbConnection = primaryStorage.newDatabaseConnection;
|
_dbConnection = primaryStorage.newDatabaseConnection;
|
||||||
_incomingMessageFinder = [[OWSIncomingMessageFinder alloc] initWithPrimaryStorage:primaryStorage];
|
_incomingMessageFinder = [[OWSIncomingMessageFinder alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
_blockingManager = [OWSBlockingManager sharedManager];
|
|
||||||
|
|
||||||
OWSSingletonAssert();
|
OWSSingletonAssert();
|
||||||
OWSAssertDebug(CurrentAppContext().isMainApp);
|
OWSAssertDebug(CurrentAppContext().isMainApp);
|
||||||
|
|
||||||
[self startObserving];
|
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (id<OWSCallMessageHandler>)callMessageHandler
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.callMessageHandler);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.callMessageHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id<ContactsManagerProtocol>)contactsManager
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.contactsManager);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.contactsManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (OWSMessageSender *)messageSender
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.messageSender);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.messageSender;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (OWSBlockingManager *)blockingManager
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.blockingManager);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.blockingManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (OWSIdentityManager *)identityManager
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.identityManager);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.identityManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (TSNetworkManager *)networkManager
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.networkManager);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.networkManager;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)startObserving
|
- (void)startObserving
|
||||||
{
|
{
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||||
|
@ -162,7 +163,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
{
|
{
|
||||||
OWSAssertDebug(envelope);
|
OWSAssertDebug(envelope);
|
||||||
|
|
||||||
return [_blockingManager isRecipientIdBlocked:envelope.source];
|
return [self.blockingManager isRecipientIdBlocked:envelope.source];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)isDataMessageBlocked:(SSKProtoDataMessage *)dataMessage envelope:(SSKProtoEnvelope *)envelope
|
- (BOOL)isDataMessageBlocked:(SSKProtoDataMessage *)dataMessage envelope:(SSKProtoEnvelope *)envelope
|
||||||
|
@ -825,7 +826,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
}];
|
}];
|
||||||
} else if (syncMessage.request.type == SSKProtoSyncMessageRequestTypeBlocked) {
|
} else if (syncMessage.request.type == SSKProtoSyncMessageRequestTypeBlocked) {
|
||||||
OWSLogInfo(@"Received request for block list");
|
OWSLogInfo(@"Received request for block list");
|
||||||
[_blockingManager syncBlockList];
|
[self.blockingManager syncBlockList];
|
||||||
} else if (syncMessage.request.type == SSKProtoSyncMessageRequestTypeConfiguration) {
|
} else if (syncMessage.request.type == SSKProtoSyncMessageRequestTypeConfiguration) {
|
||||||
BOOL areReadReceiptsEnabled =
|
BOOL areReadReceiptsEnabled =
|
||||||
[[OWSReadReceiptManager sharedManager] areReadReceiptsEnabledWithTransaction:transaction];
|
[[OWSReadReceiptManager sharedManager] areReadReceiptsEnabledWithTransaction:transaction];
|
||||||
|
|
|
@ -37,11 +37,7 @@ NS_SWIFT_NAME(MessageSender)
|
||||||
|
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
- (instancetype)initWithNetworkManager:(TSNetworkManager *)networkManager
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
|
||||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
|
||||||
contactsManager:(id<ContactsManagerProtocol>)contactsManager;
|
|
||||||
|
|
||||||
- (void)setBlockingManager:(OWSBlockingManager *)blockingManager;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send and resend text messages or resend messages with existing attachments.
|
* Send and resend text messages or resend messages with existing attachments.
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#import "OWSRequestFactory.h"
|
#import "OWSRequestFactory.h"
|
||||||
#import "OWSUploadOperation.h"
|
#import "OWSUploadOperation.h"
|
||||||
#import "PreKeyBundle+jsonDict.h"
|
#import "PreKeyBundle+jsonDict.h"
|
||||||
|
#import "SSKEnvironment.h"
|
||||||
#import "SignalRecipient.h"
|
#import "SignalRecipient.h"
|
||||||
#import "TSAccountManager.h"
|
#import "TSAccountManager.h"
|
||||||
#import "TSAttachmentStream.h"
|
#import "TSAttachmentStream.h"
|
||||||
|
@ -200,29 +201,22 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
||||||
|
|
||||||
@interface OWSMessageSender ()
|
@interface OWSMessageSender ()
|
||||||
|
|
||||||
@property (nonatomic, readonly) TSNetworkManager *networkManager;
|
|
||||||
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
||||||
@property (nonatomic, readonly) OWSBlockingManager *blockingManager;
|
|
||||||
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
||||||
@property (nonatomic, readonly) id<ContactsManagerProtocol> contactsManager;
|
|
||||||
@property (atomic, readonly) NSMutableDictionary<NSString *, NSOperationQueue *> *sendingQueueMap;
|
@property (atomic, readonly) NSMutableDictionary<NSString *, NSOperationQueue *> *sendingQueueMap;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation OWSMessageSender
|
@implementation OWSMessageSender
|
||||||
|
|
||||||
- (instancetype)initWithNetworkManager:(TSNetworkManager *)networkManager
|
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
|
||||||
contactsManager:(id<ContactsManagerProtocol>)contactsManager
|
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (!self) {
|
if (!self) {
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
_networkManager = networkManager;
|
|
||||||
_primaryStorage = primaryStorage;
|
_primaryStorage = primaryStorage;
|
||||||
_contactsManager = contactsManager;
|
|
||||||
_sendingQueueMap = [NSMutableDictionary new];
|
_sendingQueueMap = [NSMutableDictionary new];
|
||||||
_dbConnection = primaryStorage.newDatabaseConnection;
|
_dbConnection = primaryStorage.newDatabaseConnection;
|
||||||
|
|
||||||
|
@ -231,12 +225,25 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setBlockingManager:(OWSBlockingManager *)blockingManager
|
- (id<ContactsManagerProtocol>)contactsManager
|
||||||
{
|
{
|
||||||
OWSAssertDebug(blockingManager);
|
OWSAssertDebug(SSKEnvironment.shared.contactsManager);
|
||||||
OWSAssertDebug(!_blockingManager);
|
|
||||||
|
|
||||||
_blockingManager = blockingManager;
|
return SSKEnvironment.shared.contactsManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (OWSBlockingManager *)blockingManager
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.blockingManager);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.blockingManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (TSNetworkManager *)networkManager
|
||||||
|
{
|
||||||
|
OWSAssertDebug(SSKEnvironment.shared.networkManager);
|
||||||
|
|
||||||
|
return SSKEnvironment.shared.networkManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSOperationQueue *)sendingQueueForMessage:(TSOutgoingMessage *)message
|
- (NSOperationQueue *)sendingQueueForMessage:(TSOutgoingMessage *)message
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@class ContactsUpdater;
|
@class ContactsUpdater;
|
||||||
|
@class OWSBlockingManager;
|
||||||
|
@class OWSIdentityManager;
|
||||||
|
@class OWSMessageManager;
|
||||||
@class OWSMessageSender;
|
@class OWSMessageSender;
|
||||||
@class OWSPrimaryStorage;
|
@class OWSPrimaryStorage;
|
||||||
@class TSNetworkManager;
|
@class TSNetworkManager;
|
||||||
|
@ -22,7 +25,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
profileManager:(id<ProfileManagerProtocol>)profileManager
|
profileManager:(id<ProfileManagerProtocol>)profileManager
|
||||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||||
contactsUpdater:(ContactsUpdater *)contactsUpdater
|
contactsUpdater:(ContactsUpdater *)contactsUpdater
|
||||||
networkManager:(TSNetworkManager *)networkManager NS_DESIGNATED_INITIALIZER;
|
networkManager:(TSNetworkManager *)networkManager
|
||||||
|
messageManager:(OWSMessageManager *)messageManager
|
||||||
|
blockingManager:(OWSBlockingManager *)blockingManager
|
||||||
|
identityManager:(OWSIdentityManager *)identityManager NS_DESIGNATED_INITIALIZER;
|
||||||
|
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
@ -41,6 +47,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
@property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage;
|
||||||
@property (nonatomic, readonly) ContactsUpdater *contactsUpdater;
|
@property (nonatomic, readonly) ContactsUpdater *contactsUpdater;
|
||||||
@property (nonatomic, readonly) TSNetworkManager *networkManager;
|
@property (nonatomic, readonly) TSNetworkManager *networkManager;
|
||||||
|
@property (nonatomic, readonly) OWSMessageManager *messageManager;
|
||||||
|
@property (nonatomic, readonly) OWSBlockingManager *blockingManager;
|
||||||
|
@property (nonatomic, readonly) OWSIdentityManager *identityManager;
|
||||||
|
|
||||||
// This property is configured after Environment is created.
|
// This property is configured after Environment is created.
|
||||||
@property (atomic, nullable) id<OWSCallMessageHandler> callMessageHandler;
|
@property (atomic, nullable) id<OWSCallMessageHandler> callMessageHandler;
|
||||||
|
|
|
@ -18,6 +18,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
||||||
@property (nonatomic) OWSPrimaryStorage *primaryStorage;
|
@property (nonatomic) OWSPrimaryStorage *primaryStorage;
|
||||||
@property (nonatomic) ContactsUpdater *contactsUpdater;
|
@property (nonatomic) ContactsUpdater *contactsUpdater;
|
||||||
@property (nonatomic) TSNetworkManager *networkManager;
|
@property (nonatomic) TSNetworkManager *networkManager;
|
||||||
|
@property (nonatomic) OWSMessageManager *messageManager;
|
||||||
|
@property (nonatomic) OWSBlockingManager *blockingManager;
|
||||||
|
@property (nonatomic) OWSIdentityManager *identityManager;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -35,6 +38,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
||||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||||
contactsUpdater:(ContactsUpdater *)contactsUpdater
|
contactsUpdater:(ContactsUpdater *)contactsUpdater
|
||||||
networkManager:(TSNetworkManager *)networkManager
|
networkManager:(TSNetworkManager *)networkManager
|
||||||
|
messageManager:(OWSMessageManager *)messageManager
|
||||||
|
blockingManager:(OWSBlockingManager *)blockingManager
|
||||||
|
identityManager:(OWSIdentityManager *)identityManager
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (!self) {
|
if (!self) {
|
||||||
|
@ -47,6 +53,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
||||||
OWSAssertDebug(primaryStorage);
|
OWSAssertDebug(primaryStorage);
|
||||||
OWSAssertDebug(contactsUpdater);
|
OWSAssertDebug(contactsUpdater);
|
||||||
OWSAssertDebug(networkManager);
|
OWSAssertDebug(networkManager);
|
||||||
|
OWSAssertDebug(messageManager);
|
||||||
|
OWSAssertDebug(blockingManager);
|
||||||
|
OWSAssertDebug(identityManager);
|
||||||
|
|
||||||
_contactsManager = contactsManager;
|
_contactsManager = contactsManager;
|
||||||
_messageSender = messageSender;
|
_messageSender = messageSender;
|
||||||
|
@ -54,6 +63,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
||||||
_primaryStorage = primaryStorage;
|
_primaryStorage = primaryStorage;
|
||||||
_contactsUpdater = contactsUpdater;
|
_contactsUpdater = contactsUpdater;
|
||||||
_networkManager = networkManager;
|
_networkManager = networkManager;
|
||||||
|
_messageManager = messageManager;
|
||||||
|
_blockingManager = blockingManager;
|
||||||
|
_identityManager = identityManager;
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
@property (nonatomic) OWSPrimaryStorage *primaryStorage;
|
@property (nonatomic) OWSPrimaryStorage *primaryStorage;
|
||||||
@property (nonatomic) ContactsUpdater *contactsUpdater;
|
@property (nonatomic) ContactsUpdater *contactsUpdater;
|
||||||
@property (nonatomic) TSNetworkManager *networkManager;
|
@property (nonatomic) TSNetworkManager *networkManager;
|
||||||
|
@property (nonatomic) OWSMessageManager *messageManager;
|
||||||
|
@property (nonatomic) OWSBlockingManager *blockingManager;
|
||||||
|
@property (nonatomic) OWSIdentityManager *identityManager;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "MockSSKEnvironment.h"
|
#import "MockSSKEnvironment.h"
|
||||||
|
#import "OWSBlockingManager.h"
|
||||||
#import "OWSFakeCallMessageHandler.h"
|
#import "OWSFakeCallMessageHandler.h"
|
||||||
#import "OWSFakeContactsManager.h"
|
#import "OWSFakeContactsManager.h"
|
||||||
#import "OWSFakeContactsUpdater.h"
|
#import "OWSFakeContactsUpdater.h"
|
||||||
|
@ -10,6 +11,8 @@
|
||||||
#import "OWSFakeNetworkManager.h"
|
#import "OWSFakeNetworkManager.h"
|
||||||
#import "OWSFakeNotificationsManager.h"
|
#import "OWSFakeNotificationsManager.h"
|
||||||
#import "OWSFakeProfileManager.h"
|
#import "OWSFakeProfileManager.h"
|
||||||
|
#import "OWSIdentityManager.h"
|
||||||
|
#import "OWSMessageManager.h"
|
||||||
#import "OWSPrimaryStorage.h"
|
#import "OWSPrimaryStorage.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
@ -39,12 +42,19 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
TSNetworkManager *networkManager = [OWSFakeNetworkManager new];
|
TSNetworkManager *networkManager = [OWSFakeNetworkManager new];
|
||||||
OWSMessageSender *messageSender = [OWSFakeMessageSender new];
|
OWSMessageSender *messageSender = [OWSFakeMessageSender new];
|
||||||
|
|
||||||
|
OWSMessageManager *messageManager = [[OWSMessageManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
|
OWSBlockingManager *blockingManager = [[OWSBlockingManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
|
OWSIdentityManager *identityManager = [[OWSIdentityManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||||
|
|
||||||
self = [super initWithContactsManager:contactsManager
|
self = [super initWithContactsManager:contactsManager
|
||||||
messageSender:messageSender
|
messageSender:messageSender
|
||||||
profileManager:[OWSFakeProfileManager new]
|
profileManager:[OWSFakeProfileManager new]
|
||||||
primaryStorage:primaryStorage
|
primaryStorage:primaryStorage
|
||||||
contactsUpdater:[OWSFakeContactsUpdater new]
|
contactsUpdater:[OWSFakeContactsUpdater new]
|
||||||
networkManager:networkManager];
|
networkManager:networkManager
|
||||||
|
messageManager:messageManager
|
||||||
|
blockingManager:blockingManager
|
||||||
|
identityManager:identityManager];
|
||||||
if (!self) {
|
if (!self) {
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue