Move more singletons to SSKEnvironment.

This commit is contained in:
Matthew Chen 2018-09-20 12:52:43 -04:00
parent 6e3462c13f
commit 87836f506b
17 changed files with 153 additions and 112 deletions

View File

@ -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];

View File

@ -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

View File

@ -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();

View File

@ -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

View File

@ -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];
} }

View File

@ -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;

View File

@ -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
{ {

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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];

View File

@ -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.

View File

@ -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

View File

@ -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;

View File

@ -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;
} }

View File

@ -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

View File

@ -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;
} }