[SSK] + Enforce singleton access for MessagesManager and MessageSender

// FREEBIE
This commit is contained in:
Michael Kirk 2017-03-30 12:51:48 -04:00
parent eaf7b65037
commit 7f239c8040
7 changed files with 51 additions and 54 deletions

View File

@ -132,7 +132,7 @@ CHECKOUT OPTIONS:
:commit: af1946846ab2826fafadb1886a80d1da8632f091
:git: https://github.com/WhisperSystems/SignalProtocolKit.git
SignalServiceKit:
:commit: 718164fbe509e902d6dfda9f3c33c0dfc11c5e19
:commit: bdd0241a94797a65d57b97daf4c0dac39f0ee9dd
:git: https://github.com/WhisperSystems/SignalServiceKit.git
SocketRocket:
:commit: 877ac7438be3ad0b45ef5ca3969574e4b97112bf

View File

@ -100,8 +100,7 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
// XXX - careful when moving this. It must happen before we initialize TSStorageManager.
[self verifyDBKeysAvailableBeforeBackgroundLaunch];
// Setting up environment
[Environment setCurrent:[Release releaseEnvironment]];
[self setupEnvironment];
[UIUtil applySignalAppearence];
[[PushManager sharedManager] registerPushKitNotificationFuture];
@ -114,7 +113,6 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
[Environment.getCurrent.contactsManager doAfterEnvironmentInitSetup];
}
[self setupTSKitEnv];
UIStoryboard *storyboard;
if ([TSAccountManager isRegistered]) {
@ -188,27 +186,25 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
return YES;
}
- (void)setupTSKitEnv {
- (void)setupEnvironment
{
[Environment setCurrent:[Release releaseEnvironment]];
// Encryption/Descryption mutates session state and must be synchronized on a serial queue.
[SessionCipher setSessionCipherDispatchQueue:[OWSDispatch sessionCipher]];
TextSecureKitEnv *sharedEnv =
[[TextSecureKitEnv alloc] initWithCallMessageHandler:[Environment getCurrent].callMessageHandler
contactsManager:[Environment getCurrent].contactsManager
messageSender:[Environment getCurrent].messageSender
notificationsManager:[Environment getCurrent].notificationsManager];
[TextSecureKitEnv setSharedEnv:sharedEnv];
[[TSStorageManager sharedManager] setupDatabase];
OWSMessageSender *messageSender =
[[OWSMessageSender alloc] initWithNetworkManager:[Environment getCurrent].networkManager
storageManager:[TSStorageManager sharedManager]
contactsManager:[Environment getCurrent].contactsManager
contactsUpdater:[Environment getCurrent].contactsUpdater];
self.incomingMessageReadObserver =
[[OWSIncomingMessageReadObserver alloc] initWithStorageManager:[TSStorageManager sharedManager]
messageSender:messageSender];
messageSender:[Environment getCurrent].messageSender];
[self.incomingMessageReadObserver startObserving];
self.staleNotificationObserver = [OWSStaleNotificationObserver new];

View File

@ -13,15 +13,13 @@ class MessageFetcherJob: NSObject {
// MARK: injected dependencies
let networkManager: TSNetworkManager
let messagesManager: TSMessagesManager
let messageSender: MessageSender
let signalService: OWSSignalService
var runPromises = [Double: Promise<Void>]()
init(messagesManager: TSMessagesManager, messageSender: MessageSender, networkManager: TSNetworkManager, signalService: OWSSignalService) {
init(messagesManager: TSMessagesManager, networkManager: TSNetworkManager, signalService: OWSSignalService) {
self.messagesManager = messagesManager
self.networkManager = networkManager
self.messageSender = messageSender
self.signalService = signalService
}

View File

@ -13,8 +13,6 @@
#import "TSGroupThread.h"
#import <SignalServiceKit/ContactsUpdater.h>
#define isRegisteredUserDefaultString @"isRegistered"
static Environment *environment = nil;
@implementation Environment
@ -22,6 +20,10 @@ static Environment *environment = nil;
@synthesize accountManager = _accountManager,
callMessageHandler = _callMessageHandler,
callService = _callService,
contactsManager = _contactsManager,
contactsUpdater = _contactsUpdater,
messageSender = _messageSender,
networkManager = _networkManager,
notificationsManager = _notificationsManager,
preferences = _preferences,
outboundCallInitiator = _outboundCallInitiator;
@ -114,6 +116,30 @@ static Environment *environment = nil;
return _outboundCallInitiator;
}
- (OWSContactsManager *)contactsManager
{
OWSAssert(_contactsManager != nil);
return _contactsManager;
}
- (ContactsUpdater *)contactsUpdater
{
OWSAssert(_contactsUpdater != nil);
return _contactsUpdater;
}
- (TSNetworkManager *)networkManager
{
OWSAssert(_networkManager != nil);
return _networkManager;
}
- (OWSMessageSender *)messageSender
{
OWSAssert(_messageSender != nil);
return _messageSender;
}
- (NotificationsManager *)notificationsManager
{
@synchronized (self) {

View File

@ -24,7 +24,6 @@
@property UIAlertView *missingPermissionsAlertView;
@property (nonatomic, retain) NSMutableArray *currentNotifications;
@property (nonatomic) UIBackgroundTaskIdentifier callBackgroundTask;
@property (nonatomic, readonly) OWSContactsManager *contactsManager;
@property (nonatomic, readonly) OWSMessageSender *messageSender;
@property (nonatomic, readonly) OWSMessageFetcherJob *messageFetcherJob;
@property (nonatomic, readonly) CallUIAdapter *callUIAdapter;
@ -44,44 +43,29 @@
- (instancetype)initDefault
{
return [self initWithContactsManager:[Environment getCurrent].contactsManager
networkManager:[Environment getCurrent].networkManager
storageManager:[TSStorageManager sharedManager]
callMessageHandler:[Environment getCurrent].callMessageHandler
callService:[Environment getCurrent].callService
contactsUpdater:[Environment getCurrent].contactsUpdater];
return [self initWithNetworkManager:[Environment getCurrent].networkManager
storageManager:[TSStorageManager sharedManager]
callUIAdapter:[Environment getCurrent].callService.callUIAdapter
messagesManager:[TSMessagesManager sharedManager]
messageSender:[Environment getCurrent].messageSender];
}
- (instancetype)initWithContactsManager:(OWSContactsManager *)contactsManager
networkManager:(TSNetworkManager *)networkManager
storageManager:(TSStorageManager *)storageManager
callMessageHandler:(OWSWebRTCCallMessageHandler *)callMessageHandler
callService:(CallService *)callService
contactsUpdater:(ContactsUpdater *)contactsUpdater
- (instancetype)initWithNetworkManager:(TSNetworkManager *)networkManager
storageManager:(TSStorageManager *)storageManager
callUIAdapter:(CallUIAdapter *)callUIAdapter
messagesManager:(TSMessagesManager *)messagesManager
messageSender:(OWSMessageSender *)messageSender
{
self = [super init];
if (!self) {
return self;
}
_contactsManager = contactsManager;
_callUIAdapter = callService.callUIAdapter;
_messageSender = [[OWSMessageSender alloc] initWithNetworkManager:networkManager
storageManager:storageManager
contactsManager:contactsManager
contactsUpdater:contactsUpdater];
TSMessagesManager *messagesManager = [[TSMessagesManager alloc] initWithNetworkManager:networkManager
storageManager:storageManager
callMessageHandler:callMessageHandler
contactsManager:contactsManager
contactsUpdater:contactsUpdater
messageSender:_messageSender];
_callUIAdapter = callUIAdapter;
_messageSender = messageSender;
OWSSignalService *signalService = [OWSSignalService new];
_messageFetcherJob = [[OWSMessageFetcherJob alloc] initWithMessagesManager:messagesManager
messageSender:_messageSender
networkManager:networkManager
signalService:signalService];

View File

@ -58,11 +58,7 @@ static NSString *const kUnwindToMessagesViewSegue = @"UnwindToMessagesViewSegue"
- (void)commonInit
{
_messageSender = [[OWSMessageSender alloc] initWithNetworkManager:[Environment getCurrent].networkManager
storageManager:[TSStorageManager sharedManager]
contactsManager:[Environment getCurrent].contactsManager
contactsUpdater:[Environment getCurrent].contactsUpdater];
_messageSender = [Environment getCurrent].messageSender;
_contactsManager = [Environment getCurrent].contactsManager;
[self observeNotifications];

View File

@ -124,10 +124,7 @@ static NSString *const OWSConversationSettingsTableViewControllerSegueShowGroupM
{
_storageManager = [TSStorageManager sharedManager];
_contactsManager = [Environment getCurrent].contactsManager;
_messageSender = [[OWSMessageSender alloc] initWithNetworkManager:[Environment getCurrent].networkManager
storageManager:_storageManager
contactsManager:_contactsManager
contactsUpdater:[Environment getCurrent].contactsUpdater];
_messageSender = [Environment getCurrent].messageSender;
}
- (void)configureWithThread:(TSThread *)thread