// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import NS_ASSUME_NONNULL_BEGIN @class ContactDiscoveryService; @class ContactsUpdater; @class OWS2FAManager; @class OWSAttachmentDownloads; @class OWSBatchMessageProcessor; @class OWSBlockingManager; @class OWSDisappearingMessagesJob; @class OWSIdentityManager; @class OWSMessageDecrypter; @class OWSMessageManager; @class OWSMessageReceiver; @class OWSMessageSender; @class OWSOutgoingReceiptManager; @class OWSPrimaryStorage; @class OWSReadReceiptManager; @class SSKMessageSenderJobQueue; @class TSAccountManager; @class TSSocketManager; @class YapDatabaseConnection; @protocol ContactsManagerProtocol; @protocol NotificationsProtocol; @protocol OWSCallMessageHandler; @protocol ProfileManagerProtocol; @protocol OWSUDManager; @protocol SSKReachabilityManager; @protocol OWSSyncManagerProtocol; @protocol OWSTypingIndicators; @interface SSKEnvironment : NSObject - (instancetype)initWithProfileManager:(id)profileManager primaryStorage:(OWSPrimaryStorage *)primaryStorage blockingManager:(OWSBlockingManager *)blockingManager identityManager:(OWSIdentityManager *)identityManager tsAccountManager:(TSAccountManager *)tsAccountManager disappearingMessagesJob:(OWSDisappearingMessagesJob *)disappearingMessagesJob readReceiptManager:(OWSReadReceiptManager *)readReceiptManager outgoingReceiptManager:(OWSOutgoingReceiptManager *)outgoingReceiptManager reachabilityManager:(id)reachabilityManager typingIndicators:(id)typingIndicators NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE; @property (nonatomic, readonly, class) SSKEnvironment *shared; + (void)setShared:(SSKEnvironment *)env; #ifdef DEBUG // Should only be called by tests. + (void)clearSharedForTests; #endif @property (nonatomic, readonly) id profileManager; @property (nonatomic, readonly) OWSPrimaryStorage *primaryStorage; @property (nonatomic, readonly) OWSBlockingManager *blockingManager; @property (nonatomic, readonly) OWSIdentityManager *identityManager; @property (nonatomic, readonly) TSAccountManager *tsAccountManager; @property (nonatomic, readonly) OWSDisappearingMessagesJob *disappearingMessagesJob; @property (nonatomic, readonly) OWSReadReceiptManager *readReceiptManager; @property (nonatomic, readonly) OWSOutgoingReceiptManager *outgoingReceiptManager; @property (nonatomic, readonly) id reachabilityManager; @property (nonatomic, readonly) id typingIndicators; // This property is configured after Environment is created. @property (atomic, nullable) id notificationsManager; @property (atomic, readonly) YapDatabaseConnection *objectReadWriteConnection; @property (atomic, readonly) YapDatabaseConnection *sessionStoreDBConnection; @property (atomic, readonly) YapDatabaseConnection *migrationDBConnection; @property (atomic, readonly) YapDatabaseConnection *analyticsDBConnection; - (BOOL)isComplete; @end NS_ASSUME_NONNULL_END