[SSK] + Enforce singleton access for MessagesManager and MessageSender

// FREEBIE
pull/1/head
Michael Kirk 8 years ago
parent eaf7b65037
commit 7f239c8040

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

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

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

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

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

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

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

Loading…
Cancel
Save