Hang more singletons on SSKEnv.

pull/1/head
Matthew Chen 7 years ago
parent 4096736124
commit f24ccb3ce6

@ -3,6 +3,9 @@
// //
#import "MockEnvironment.h" #import "MockEnvironment.h"
#import "OWSBackup.h"
#import "OWSContactsSyncing.h"
#import "OWSWindowManager.h"
#import <SignalMessaging/OWSPreferences.h> #import <SignalMessaging/OWSPreferences.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN

@ -9,9 +9,14 @@
#import <SignalMessaging/OWSDatabaseMigration.h> #import <SignalMessaging/OWSDatabaseMigration.h>
#import <SignalMessaging/OWSProfileManager.h> #import <SignalMessaging/OWSProfileManager.h>
#import <SignalMessaging/SignalMessaging-Swift.h> #import <SignalMessaging/SignalMessaging-Swift.h>
#import <SignalServiceKit/AppReadiness.h>
#import <SignalServiceKit/AppVersion.h>
#import <SignalServiceKit/ContactDiscoveryService.h>
#import <SignalServiceKit/OWS2FAManager.h>
#import <SignalServiceKit/OWSBackgroundTask.h> #import <SignalServiceKit/OWSBackgroundTask.h>
#import <SignalServiceKit/OWSBatchMessageProcessor.h> #import <SignalServiceKit/OWSBatchMessageProcessor.h>
#import <SignalServiceKit/OWSBlockingManager.h> #import <SignalServiceKit/OWSBlockingManager.h>
#import <SignalServiceKit/OWSDisappearingMessagesJob.h>
#import <SignalServiceKit/OWSIdentityManager.h> #import <SignalServiceKit/OWSIdentityManager.h>
#import <SignalServiceKit/OWSMessageDecrypter.h> #import <SignalServiceKit/OWSMessageDecrypter.h>
#import <SignalServiceKit/OWSMessageManager.h> #import <SignalServiceKit/OWSMessageManager.h>
@ -65,6 +70,12 @@ NS_ASSUME_NONNULL_BEGIN
OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage]; OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage];
TSSocketManager *socketManager = [[TSSocketManager alloc] init]; TSSocketManager *socketManager = [[TSSocketManager alloc] init];
TSAccountManager *tsAccountManager = [[TSAccountManager alloc] initWithPrimaryStorage:primaryStorage]; TSAccountManager *tsAccountManager = [[TSAccountManager alloc] initWithPrimaryStorage:primaryStorage];
OWS2FAManager *ows2FAManager = [[OWS2FAManager alloc] initWithPrimaryStorage:primaryStorage];
AppVersion *appVersion = [[AppVersion alloc] init];
AppReadiness *appReadiness = [[AppReadiness alloc] initDefault];
OWSDisappearingMessagesJob *disappearingMessagesJob =
[[OWSDisappearingMessagesJob alloc] initWithPrimaryStorage:primaryStorage];
ContactDiscoveryService *contactDiscoveryService = [[ContactDiscoveryService alloc] initDefault];
[Environment setShared:[[Environment alloc] initWithPreferences:preferences]]; [Environment setShared:[[Environment alloc] initWithPreferences:preferences]];
@ -82,7 +93,12 @@ NS_ASSUME_NONNULL_BEGIN
batchMessageProcessor:batchMessageProcessor batchMessageProcessor:batchMessageProcessor
messageReceiver:messageReceiver messageReceiver:messageReceiver
socketManager:socketManager socketManager:socketManager
tsAccountManager:tsAccountManager]]; tsAccountManager:tsAccountManager
ows2FAManager:ows2FAManager
appVersion:appVersion
appReadiness:appReadiness
disappearingMessagesJob:disappearingMessagesJob
contactDiscoveryService:contactDiscoveryService]];
appSpecificSingletonBlock(); appSpecificSingletonBlock();

@ -45,6 +45,8 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (instancetype)initDefault NS_DESIGNATED_INITIALIZER;
+ (instancetype)shared; + (instancetype)shared;
- (void)testService; - (void)testService;

@ -7,6 +7,7 @@
#import "CDSSigningCertificate.h" #import "CDSSigningCertificate.h"
#import "OWSError.h" #import "OWSError.h"
#import "OWSRequestFactory.h" #import "OWSRequestFactory.h"
#import "SSKEnvironment.h"
#import "TSNetworkManager.h" #import "TSNetworkManager.h"
#import <Curve25519Kit/Curve25519.h> #import <Curve25519Kit/Curve25519.h>
#import <HKDFKit/HKDFKit.h> #import <HKDFKit/HKDFKit.h>
@ -240,14 +241,10 @@ NS_ASSUME_NONNULL_BEGIN
+ (instancetype)shared + (instancetype)shared
{ {
static dispatch_once_t onceToken; OWSAssertDebug(SSKEnvironment.shared.contactDiscoveryService);
static id sharedInstance = nil;
dispatch_once(&onceToken, ^{
sharedInstance = [[ContactDiscoveryService alloc] initDefault];
});
return sharedInstance;
}
return SSKEnvironment.shared.contactDiscoveryService;
}
- (instancetype)initDefault - (instancetype)initDefault
{ {

@ -17,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
- (void)startAnyExpirationForMessage:(TSMessage *)message - (void)startAnyExpirationForMessage:(TSMessage *)message
expirationStartedAt:(uint64_t)expirationStartedAt expirationStartedAt:(uint64_t)expirationStartedAt
transaction:(YapDatabaseReadWriteTransaction *_Nonnull)transaction; transaction:(YapDatabaseReadWriteTransaction *_Nonnull)transaction;

@ -12,6 +12,7 @@
#import "OWSDisappearingMessagesConfiguration.h" #import "OWSDisappearingMessagesConfiguration.h"
#import "OWSDisappearingMessagesFinder.h" #import "OWSDisappearingMessagesFinder.h"
#import "OWSPrimaryStorage.h" #import "OWSPrimaryStorage.h"
#import "SSKEnvironment.h"
#import "TSIncomingMessage.h" #import "TSIncomingMessage.h"
#import "TSMessage.h" #import "TSMessage.h"
#import "TSThread.h" #import "TSThread.h"
@ -51,12 +52,9 @@ void AssertIsOnDisappearingMessagesQueue()
+ (instancetype)sharedJob + (instancetype)sharedJob
{ {
static OWSDisappearingMessagesJob *sharedJob = nil; OWSAssertDebug(SSKEnvironment.shared.disappearingMessagesJob);
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ return SSKEnvironment.shared.disappearingMessagesJob;
sharedJob = [[self alloc] initWithPrimaryStorage:[OWSPrimaryStorage sharedManager]];
});
return sharedJob;
} }
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage - (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage

@ -4,9 +4,14 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class AppReadiness;
@class AppVersion;
@class ContactDiscoveryService;
@class ContactsUpdater; @class ContactsUpdater;
@class OWS2FAManager;
@class OWSBatchMessageProcessor; @class OWSBatchMessageProcessor;
@class OWSBlockingManager; @class OWSBlockingManager;
@class OWSDisappearingMessagesJob;
@class OWSIdentityManager; @class OWSIdentityManager;
@class OWSMessageDecrypter; @class OWSMessageDecrypter;
@class OWSMessageManager; @class OWSMessageManager;
@ -40,7 +45,12 @@ NS_ASSUME_NONNULL_BEGIN
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
messageReceiver:(OWSMessageReceiver *)messageReceiver messageReceiver:(OWSMessageReceiver *)messageReceiver
socketManager:(TSSocketManager *)socketManager socketManager:(TSSocketManager *)socketManager
tsAccountManager:(TSAccountManager *)tsAccountManager NS_DESIGNATED_INITIALIZER; tsAccountManager:(TSAccountManager *)tsAccountManager
ows2FAManager:(OWS2FAManager *)ows2FAManager
appVersion:(AppVersion *)appVersion
appReadiness:(AppReadiness *)appReadiness
disappearingMessagesJob:(OWSDisappearingMessagesJob *)disappearingMessagesJob
contactDiscoveryService:(ContactDiscoveryService *)contactDiscoveryService NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
@ -68,6 +78,11 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) OWSMessageReceiver *messageReceiver; @property (nonatomic, readonly) OWSMessageReceiver *messageReceiver;
@property (nonatomic, readonly) TSSocketManager *socketManager; @property (nonatomic, readonly) TSSocketManager *socketManager;
@property (nonatomic, readonly) TSAccountManager *tsAccountManager; @property (nonatomic, readonly) TSAccountManager *tsAccountManager;
@property (nonatomic, readonly) OWS2FAManager *ows2FAManager;
@property (nonatomic, readonly) AppVersion *appVersion;
@property (nonatomic, readonly) AppReadiness *appReadiness;
@property (nonatomic, readonly) OWSDisappearingMessagesJob *disappearingMessagesJob;
@property (nonatomic, readonly) ContactDiscoveryService *contactDiscoveryService;
// 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;

@ -27,6 +27,11 @@ static SSKEnvironment *sharedSSKEnvironment;
@property (nonatomic) OWSMessageReceiver *messageReceiver; @property (nonatomic) OWSMessageReceiver *messageReceiver;
@property (nonatomic) TSSocketManager *socketManager; @property (nonatomic) TSSocketManager *socketManager;
@property (nonatomic) TSAccountManager *tsAccountManager; @property (nonatomic) TSAccountManager *tsAccountManager;
@property (nonatomic) OWS2FAManager *ows2FAManager;
@property (nonatomic) AppVersion *appVersion;
@property (nonatomic) AppReadiness *appReadiness;
@property (nonatomic) OWSDisappearingMessagesJob *disappearingMessagesJob;
@property (nonatomic) ContactDiscoveryService *contactDiscoveryService;
@end @end
@ -53,7 +58,11 @@ static SSKEnvironment *sharedSSKEnvironment;
messageReceiver:(OWSMessageReceiver *)messageReceiver messageReceiver:(OWSMessageReceiver *)messageReceiver
socketManager:(TSSocketManager *)socketManager socketManager:(TSSocketManager *)socketManager
tsAccountManager:(TSAccountManager *)tsAccountManager tsAccountManager:(TSAccountManager *)tsAccountManager
{ ows2FAManager:(OWS2FAManager *)ows2FAManager
appVersion:(AppVersion *)appVersion
appReadiness:(AppReadiness *)appReadiness
disappearingMessagesJob:(OWSDisappearingMessagesJob *)disappearingMessagesJob
contactDiscoveryService:(ContactDiscoveryService *)contactDiscoveryService {
self = [super init]; self = [super init];
if (!self) { if (!self) {
return self; return self;
@ -74,6 +83,11 @@ static SSKEnvironment *sharedSSKEnvironment;
OWSAssertDebug(messageReceiver); OWSAssertDebug(messageReceiver);
OWSAssertDebug(socketManager); OWSAssertDebug(socketManager);
OWSAssertDebug(tsAccountManager); OWSAssertDebug(tsAccountManager);
OWSAssertDebug(ows2FAManager);
OWSAssertDebug(appVersion);
OWSAssertDebug(appReadiness);
OWSAssertDebug(disappearingMessagesJob);
OWSAssertDebug(contactDiscoveryService);
_contactsManager = contactsManager; _contactsManager = contactsManager;
_messageSender = messageSender; _messageSender = messageSender;
@ -90,6 +104,11 @@ static SSKEnvironment *sharedSSKEnvironment;
_messageReceiver = messageReceiver; _messageReceiver = messageReceiver;
_socketManager = socketManager; _socketManager = socketManager;
_tsAccountManager = tsAccountManager; _tsAccountManager = tsAccountManager;
_ows2FAManager = ows2FAManager;
_appVersion = appVersion;
_appReadiness = appReadiness;
_disappearingMessagesJob = disappearingMessagesJob;
_contactDiscoveryService = contactDiscoveryService;
return self; return self;
} }

@ -3,8 +3,13 @@
// //
#import "MockSSKEnvironment.h" #import "MockSSKEnvironment.h"
#import "AppReadiness.h"
#import "AppVersion.h"
#import "ContactDiscoveryService.h"
#import "OWS2FAManager.h"
#import "OWSBatchMessageProcessor.h" #import "OWSBatchMessageProcessor.h"
#import "OWSBlockingManager.h" #import "OWSBlockingManager.h"
#import "OWSDisappearingMessagesJob.h"
#import "OWSFakeCallMessageHandler.h" #import "OWSFakeCallMessageHandler.h"
#import "OWSFakeContactsManager.h" #import "OWSFakeContactsManager.h"
#import "OWSFakeContactsUpdater.h" #import "OWSFakeContactsUpdater.h"
@ -60,6 +65,12 @@ NS_ASSUME_NONNULL_BEGIN
OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage]; OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage];
TSSocketManager *socketManager = [[TSSocketManager alloc] init]; TSSocketManager *socketManager = [[TSSocketManager alloc] init];
TSAccountManager *tsAccountManager = [[TSAccountManager alloc] initWithPrimaryStorage:primaryStorage]; TSAccountManager *tsAccountManager = [[TSAccountManager alloc] initWithPrimaryStorage:primaryStorage];
OWS2FAManager *ows2FAManager = [[OWS2FAManager alloc] initWithPrimaryStorage:primaryStorage];
AppVersion *appVersion = [[AppVersion alloc] init];
AppReadiness *appReadiness = [[AppReadiness alloc] initDefault];
OWSDisappearingMessagesJob *disappearingMessagesJob =
[[OWSDisappearingMessagesJob alloc] initWithPrimaryStorage:primaryStorage];
ContactDiscoveryService *contactDiscoveryService = [[ContactDiscoveryService alloc] initDefault];
self = [super initWithContactsManager:contactsManager self = [super initWithContactsManager:contactsManager
messageSender:messageSender messageSender:messageSender
@ -75,7 +86,12 @@ NS_ASSUME_NONNULL_BEGIN
batchMessageProcessor:batchMessageProcessor batchMessageProcessor:batchMessageProcessor
messageReceiver:messageReceiver messageReceiver:messageReceiver
socketManager:socketManager socketManager:socketManager
tsAccountManager:tsAccountManager]; tsAccountManager:tsAccountManager
ows2FAManager:ows2FAManager
appVersion:appVersion
appReadiness:appReadiness
disappearingMessagesJob:disappearingMessagesJob
contactDiscoveryService:contactDiscoveryService];
if (!self) { if (!self) {
return nil; return nil;
} }

@ -10,6 +10,8 @@ typedef void (^AppReadyBlock)(void);
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (instancetype)initDefault NS_DESIGNATED_INITIALIZER;
// This method can be called on any thread. // This method can be called on any thread.
+ (BOOL)isAppReady; + (BOOL)isAppReady;

@ -3,6 +3,7 @@
// //
#import "AppReadiness.h" #import "AppReadiness.h"
#import "SSKEnvironment.h"
#import <SignalCoreKit/Threading.h> #import <SignalCoreKit/Threading.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -21,12 +22,9 @@ NS_ASSUME_NONNULL_BEGIN
+ (instancetype)sharedManager + (instancetype)sharedManager
{ {
static AppReadiness *sharedMyManager = nil; OWSAssertDebug(SSKEnvironment.shared.appReadiness);
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ return SSKEnvironment.shared.appReadiness;
sharedMyManager = [[self alloc] initDefault];
});
return sharedMyManager;
} }
- (instancetype)initDefault - (instancetype)initDefault

@ -14,8 +14,6 @@
@property (atomic, readonly) NSString *lastCompletedLaunchMainAppVersion; @property (atomic, readonly) NSString *lastCompletedLaunchMainAppVersion;
@property (atomic, readonly) NSString *lastCompletedLaunchSAEAppVersion; @property (atomic, readonly) NSString *lastCompletedLaunchSAEAppVersion;
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)sharedInstance; + (instancetype)sharedInstance;
- (void)mainAppLaunchDidComplete; - (void)mainAppLaunchDidComplete;

@ -3,7 +3,8 @@
// //
#import "AppVersion.h" #import "AppVersion.h"
#import <SignalServiceKit/NSUserDefaults+OWS.h> #import "NSUserDefaults+OWS.h"
#import "SSKEnvironment.h"
NSString *const kNSUserDefaults_FirstAppVersion = @"kNSUserDefaults_FirstAppVersion"; NSString *const kNSUserDefaults_FirstAppVersion = @"kNSUserDefaults_FirstAppVersion";
NSString *const kNSUserDefaults_LastAppVersion = @"kNSUserDefaults_LastVersion"; NSString *const kNSUserDefaults_LastAppVersion = @"kNSUserDefaults_LastVersion";
@ -31,13 +32,9 @@ NSString *const kNSUserDefaults_LastCompletedLaunchAppVersion_SAE
+ (instancetype)sharedInstance + (instancetype)sharedInstance
{ {
static AppVersion *instance = nil; OWSAssertDebug(SSKEnvironment.shared.appVersion);
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ return SSKEnvironment.shared.appVersion;
instance = [AppVersion new];
[instance configure];
});
return instance;
} }
- (void)configure { - (void)configure {

@ -9,11 +9,15 @@ extern NSString *const NSNotificationName_2FAStateDidChange;
typedef void (^OWS2FASuccess)(void); typedef void (^OWS2FASuccess)(void);
typedef void (^OWS2FAFailure)(NSError *error); typedef void (^OWS2FAFailure)(NSError *error);
@class OWSPrimaryStorage;
// This class can be safely accessed and used from any thread. // This class can be safely accessed and used from any thread.
@interface OWS2FAManager : NSObject @interface OWS2FAManager : NSObject
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
+ (instancetype)sharedManager; + (instancetype)sharedManager;
@property (nullable, nonatomic, readonly) NSString *pinCode; @property (nullable, nonatomic, readonly) NSString *pinCode;

@ -6,6 +6,7 @@
#import "NSNotificationCenter+OWS.h" #import "NSNotificationCenter+OWS.h"
#import "OWSPrimaryStorage.h" #import "OWSPrimaryStorage.h"
#import "OWSRequestFactory.h" #import "OWSRequestFactory.h"
#import "SSKEnvironment.h"
#import "TSNetworkManager.h" #import "TSNetworkManager.h"
#import "YapDatabaseConnection+OWS.h" #import "YapDatabaseConnection+OWS.h"
@ -24,7 +25,6 @@ const NSUInteger kDaySecs = kHourSecs * 24;
@interface OWS2FAManager () @interface OWS2FAManager ()
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection; @property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
@property (nonatomic, readonly) TSNetworkManager *networkManager;
@end @end
@ -34,24 +34,12 @@ const NSUInteger kDaySecs = kHourSecs * 24;
+ (instancetype)sharedManager + (instancetype)sharedManager
{ {
static OWS2FAManager *sharedMyManager = nil; OWSAssertDebug(SSKEnvironment.shared.ows2FAManager);
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] initDefault];
});
return sharedMyManager;
}
- (instancetype)initDefault
{
OWSPrimaryStorage *primaryStorage = [OWSPrimaryStorage sharedManager];
TSNetworkManager *networkManager = [TSNetworkManager sharedManager];
return [self initWithPrimaryStorage:primaryStorage networkManager:networkManager]; return SSKEnvironment.shared.ows2FAManager;
} }
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage - (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
networkManager:(TSNetworkManager *)networkManager
{ {
self = [super init]; self = [super init];
@ -60,16 +48,24 @@ const NSUInteger kDaySecs = kHourSecs * 24;
} }
OWSAssertDebug(primaryStorage); OWSAssertDebug(primaryStorage);
OWSAssertDebug(networkManager);
_dbConnection = primaryStorage.newDatabaseConnection; _dbConnection = primaryStorage.newDatabaseConnection;
_networkManager = networkManager;
OWSSingletonAssert(); OWSSingletonAssert();
return self; return self;
} }
#pragma mark - Dependencies
- (TSNetworkManager *)networkManager {
OWSAssertDebug(SSKEnvironment.shared.networkManager);
return SSKEnvironment.shared.networkManager;
}
#pragma mark -
- (nullable NSString *)pinCode - (nullable NSString *)pinCode
{ {
return [self.dbConnection objectForKey:kOWS2FAManager_PinCode inCollection:kOWS2FAManager_Collection]; return [self.dbConnection objectForKey:kOWS2FAManager_PinCode inCollection:kOWS2FAManager_Collection];

Loading…
Cancel
Save