diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 11a676fdd..84500eefb 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -28,7 +28,6 @@ #import #import #import -#import #import #import #import @@ -193,9 +192,6 @@ static NSTimeInterval launchStartedAt; screenBlockingWindow:OWSScreenLockUI.sharedManager.screenBlockingWindow]; [OWSScreenLockUI.sharedManager startObserving]; - // Ensure OWSSyncManager is instantiated. - [OWSSyncManager shared]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(storageIsReady) name:StorageIsReadyNotification diff --git a/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m index 405cfed90..1e02461ea 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m @@ -17,7 +17,6 @@ #import #import #import -#import #import #import #import @@ -142,8 +141,7 @@ NS_ASSUME_NONNULL_BEGIN + (void)sendConfigurationSyncMessage { - [NSNotificationCenter.defaultCenter postNotificationNameAsync:NSNotificationName_SyncConfigurationNeeded - object:nil]; + [SSKEnvironment.shared.syncManager sendConfigurationSyncMessage]; } @end diff --git a/Signal/test/mocks/MockEnvironment.h b/Signal/test/mocks/MockEnvironment.h index cbb121adb..7fb59f801 100644 --- a/Signal/test/mocks/MockEnvironment.h +++ b/Signal/test/mocks/MockEnvironment.h @@ -14,7 +14,6 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) OWSContactsManager *contactsManager; @property (nonatomic) OWSPreferences *preferences; -@property (nonatomic) OWSSyncManager *syncManager; @property (nonatomic) OWSSounds *sounds; @property (nonatomic) LockInteractionController *lockInteractionController; @property (nonatomic) OWSWindowManager *windowManager; diff --git a/Signal/test/mocks/MockEnvironment.m b/Signal/test/mocks/MockEnvironment.m index 99ef2ba07..97dd723a4 100644 --- a/Signal/test/mocks/MockEnvironment.m +++ b/Signal/test/mocks/MockEnvironment.m @@ -4,7 +4,6 @@ #import "MockEnvironment.h" #import "OWSBackup.h" -#import "OWSSyncManager.h" #import "OWSWindowManager.h" #import #import @@ -28,13 +27,11 @@ NS_ASSUME_NONNULL_BEGIN // TODO: We should probably mock this out. OWSPreferences *preferences = [OWSPreferences new]; - OWSSyncManager *syncManager = [[OWSSyncManager alloc] initDefault]; OWSSounds *sounds = [[OWSSounds alloc] initWithPrimaryStorage:primaryStorage]; LockInteractionController *lockInteractionController = [[LockInteractionController alloc] initDefault]; OWSWindowManager *windowManager = [[OWSWindowManager alloc] initDefault]; self = [super initWithPreferences:preferences - syncManager:syncManager sounds:sounds lockInteractionController:lockInteractionController windowManager:windowManager]; diff --git a/SignalMessaging/contacts/OWSSyncManager.h b/SignalMessaging/contacts/OWSSyncManager.h index 4fbba73de..7e30be498 100644 --- a/SignalMessaging/contacts/OWSSyncManager.h +++ b/SignalMessaging/contacts/OWSSyncManager.h @@ -2,6 +2,8 @@ // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // +#import + NS_ASSUME_NONNULL_BEGIN @class OWSContactsManager; @@ -9,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @class OWSMessageSender; @class OWSProfileManager; -@interface OWSSyncManager : NSObject +@interface OWSSyncManager : NSObject - (instancetype)init NS_UNAVAILABLE; diff --git a/SignalMessaging/contacts/OWSSyncManager.m b/SignalMessaging/contacts/OWSSyncManager.m index ab4bf8998..ac60e9c55 100644 --- a/SignalMessaging/contacts/OWSSyncManager.m +++ b/SignalMessaging/contacts/OWSSyncManager.m @@ -8,12 +8,14 @@ #import "OWSPreferences.h" #import "OWSProfileManager.h" #import "OWSReadReceiptManager.h" +#import #import #import #import #import #import #import +#import #import #import @@ -33,9 +35,9 @@ NSString *const kOWSPrimaryStorageOWSSyncManagerLastMessageKey = @"kTSStorageMan @implementation OWSSyncManager + (instancetype)shared { - OWSAssertDebug(Environment.shared.syncManager); + OWSAssertDebug(SSKEnvironment.shared.syncManager); - return Environment.shared.syncManager; + return SSKEnvironment.shared.syncManager; } - (instancetype)initDefault { @@ -55,10 +57,6 @@ NSString *const kOWSPrimaryStorageOWSSyncManagerLastMessageKey = @"kTSStorageMan selector:@selector(profileKeyDidChange:) name:kNSNotificationName_ProfileKeyDidChange object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(syncConfigurationNeeded:) - name:NSNotificationName_SyncConfigurationNeeded - object:nil]; return self; } @@ -107,12 +105,6 @@ NSString *const kOWSPrimaryStorageOWSSyncManagerLastMessageKey = @"kTSStorageMan [self sendSyncContactsMessageIfPossible]; } -- (void)syncConfigurationNeeded:(id)notification { - OWSAssertIsOnMainThread(); - - [self sendConfigurationSyncMessage]; -} - #pragma mark - - (YapDatabaseConnection *)editingDatabaseConnection { @@ -200,6 +192,12 @@ NSString *const kOWSPrimaryStorageOWSSyncManagerLastMessageKey = @"kTSStorageMan } - (void)sendConfigurationSyncMessage { + [AppReadiness runNowOrWhenAppIsReady:^{ + [self sendConfigurationSyncMessage_AppReady]; + }]; +} + +- (void)sendConfigurationSyncMessage_AppReady { DDLogInfo(@""); BOOL areReadReceiptsEnabled = SSKEnvironment.shared.readReceiptManager.areReadReceiptsEnabled; diff --git a/SignalMessaging/environment/AppSetup.m b/SignalMessaging/environment/AppSetup.m index 9106a8d2d..85f476cbe 100644 --- a/SignalMessaging/environment/AppSetup.m +++ b/SignalMessaging/environment/AppSetup.m @@ -88,7 +88,6 @@ NS_ASSUME_NONNULL_BEGIN OWSWindowManager *windowManager = [[OWSWindowManager alloc] initDefault]; [Environment setShared:[[Environment alloc] initWithPreferences:preferences - syncManager:syncManager sounds:sounds lockInteractionController:lockInteractionController windowManager:windowManager]]; @@ -111,8 +110,9 @@ NS_ASSUME_NONNULL_BEGIN ows2FAManager:ows2FAManager disappearingMessagesJob:disappearingMessagesJob contactDiscoveryService:contactDiscoveryService - disappearingMessagesJob:readReceiptManager - contactDiscoveryService:outgoingReceiptManager]]; + readReceiptManager:readReceiptManager + outgoingReceiptManager:outgoingReceiptManager + syncManager:syncManager]]; appSpecificSingletonBlock(); diff --git a/SignalMessaging/environment/Environment.h b/SignalMessaging/environment/Environment.h index 231a360e8..0a854ab0b 100644 --- a/SignalMessaging/environment/Environment.h +++ b/SignalMessaging/environment/Environment.h @@ -8,7 +8,6 @@ @class OWSContactsManager; @class OWSPreferences; @class OWSSounds; -@class OWSSyncManager; @class OWSWindowManager; /** @@ -24,14 +23,12 @@ - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithPreferences:(OWSPreferences *)preferences - syncManager:(OWSSyncManager *)syncManager sounds:(OWSSounds *)sounds lockInteractionController:(LockInteractionController *)lockInteractionController windowManager:(OWSWindowManager *)windowManager; @property (nonatomic, readonly) OWSContactsManager *contactsManager; @property (nonatomic, readonly) OWSPreferences *preferences; -@property (nonatomic, readonly) OWSSyncManager *syncManager; @property (nonatomic, readonly) OWSSounds *sounds; @property (nonatomic, readonly) LockInteractionController *lockInteractionController; @property (nonatomic, readonly) OWSWindowManager *windowManager; diff --git a/SignalMessaging/environment/Environment.m b/SignalMessaging/environment/Environment.m index b75c59114..544b09267 100644 --- a/SignalMessaging/environment/Environment.m +++ b/SignalMessaging/environment/Environment.m @@ -13,7 +13,6 @@ static Environment *sharedEnvironment = nil; @property (nonatomic) OWSContactsManager *contactsManager; @property (nonatomic) OWSPreferences *preferences; -@property (nonatomic) OWSSyncManager *syncManager; @property (nonatomic) OWSSounds *sounds; @property (nonatomic) LockInteractionController *lockInteractionController; @property (nonatomic) OWSWindowManager *windowManager; @@ -49,7 +48,6 @@ static Environment *sharedEnvironment = nil; } - (instancetype)initWithPreferences:(OWSPreferences *)preferences - syncManager:(OWSSyncManager *)syncManager sounds:(OWSSounds *)sounds lockInteractionController:(LockInteractionController *)lockInteractionController windowManager:(OWSWindowManager *)windowManager { @@ -59,13 +57,11 @@ static Environment *sharedEnvironment = nil; } OWSAssertDebug(preferences); - OWSAssertDebug(syncManager); OWSAssertDebug(sounds); OWSAssertDebug(lockInteractionController); OWSAssertDebug(windowManager); _preferences = preferences; - _syncManager = syncManager; _sounds = sounds; _lockInteractionController = lockInteractionController; _windowManager = windowManager; diff --git a/SignalMessaging/utils/OWSPreferences.m b/SignalMessaging/utils/OWSPreferences.m index c7eb41c2e..56d736f28 100644 --- a/SignalMessaging/utils/OWSPreferences.m +++ b/SignalMessaging/utils/OWSPreferences.m @@ -6,7 +6,8 @@ #import #import #import -#import +#import +#import #import #import #import @@ -201,8 +202,7 @@ NSString *const OWSPreferencesKeySystemCallLogEnabled = @"OWSPreferencesKeySyste { [self setValueForKey:OWSPreferencesKeyShouldShowUnidentifiedDeliveryIndicators toValue:@(value)]; - [NSNotificationCenter.defaultCenter postNotificationNameAsync:NSNotificationName_SyncConfigurationNeeded - object:nil]; + [SSKEnvironment.shared.syncManager sendConfigurationSyncMessage]; } #pragma mark - Calling diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h index 5482c3339..8cf32a566 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h @@ -6,8 +6,6 @@ NS_ASSUME_NONNULL_BEGIN -extern NSString *const NSNotificationName_SyncConfigurationNeeded; - @interface OWSSyncConfigurationMessage : OWSOutgoingSyncMessage - (instancetype)init NS_UNAVAILABLE; diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m index 33576c962..b92e6522d 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m @@ -7,8 +7,6 @@ NS_ASSUME_NONNULL_BEGIN -NSString *const NSNotificationName_SyncConfigurationNeeded = @"NSNotificationName_SyncConfigurationNeeded"; - @interface OWSSyncConfigurationMessage () @property (nonatomic, readonly) BOOL areReadReceiptsEnabled; diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index cb9d032c0..27f30e68e 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -27,7 +27,6 @@ #import "OWSPrimaryStorage.h" #import "OWSReadReceiptManager.h" #import "OWSRecordTranscriptJob.h" -#import "OWSSyncConfigurationMessage.h" #import "OWSSyncContactsMessage.h" #import "OWSSyncGroupsMessage.h" #import "OWSSyncGroupsRequestMessage.h" @@ -849,8 +848,7 @@ NS_ASSUME_NONNULL_BEGIN OWSLogInfo(@"Received request for block list"); [self.blockingManager syncBlockList]; } else if (syncMessage.request.type == SSKProtoSyncMessageRequestTypeConfiguration) { - [NSNotificationCenter.defaultCenter postNotificationNameAsync:NSNotificationName_SyncConfigurationNeeded - object:nil]; + [SSKEnvironment.shared.syncManager sendConfigurationSyncMessage]; } else { OWSLogWarn(@"ignoring unsupported sync request message"); } diff --git a/SignalServiceKit/src/Messages/OWSReadReceiptManager.m b/SignalServiceKit/src/Messages/OWSReadReceiptManager.m index d8625396f..f64ebd4a9 100644 --- a/SignalServiceKit/src/Messages/OWSReadReceiptManager.m +++ b/SignalServiceKit/src/Messages/OWSReadReceiptManager.m @@ -4,7 +4,6 @@ #import "OWSReadReceiptManager.h" #import "AppReadiness.h" -#import "NSNotificationCenter+OWS.h" #import "OWSLinkedDeviceReadReceipt.h" #import "OWSMessageSender.h" #import "OWSOutgoingReceiptManager.h" @@ -12,7 +11,6 @@ #import "OWSReadReceiptsForLinkedDevicesMessage.h" #import "OWSReceiptsForSenderMessage.h" #import "OWSStorage.h" -#import "OWSSyncConfigurationMessage.h" #import "SSKEnvironment.h" #import "TSAccountManager.h" #import "TSContactThread.h" @@ -571,8 +569,7 @@ NSString *const OWSReadReceiptManagerAreReadReceiptsEnabled = @"areReadReceiptsE forKey:OWSReadReceiptManagerAreReadReceiptsEnabled inCollection:OWSReadReceiptManagerCollection]; - [NSNotificationCenter.defaultCenter postNotificationNameAsync:NSNotificationName_SyncConfigurationNeeded - object:nil]; + [SSKEnvironment.shared.syncManager sendConfigurationSyncMessage]; self.areReadReceiptsEnabledCached = @(value); } diff --git a/SignalServiceKit/src/SSKEnvironment.h b/SignalServiceKit/src/SSKEnvironment.h index 02d6e04c9..d9bfbfcaa 100644 --- a/SignalServiceKit/src/SSKEnvironment.h +++ b/SignalServiceKit/src/SSKEnvironment.h @@ -28,6 +28,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol OWSCallMessageHandler; @protocol ProfileManagerProtocol; @protocol OWSUDManager; +@protocol OWSSyncManagerProtocol; @interface SSKEnvironment : NSObject @@ -49,8 +50,9 @@ NS_ASSUME_NONNULL_BEGIN ows2FAManager:(OWS2FAManager *)ows2FAManager disappearingMessagesJob:(OWSDisappearingMessagesJob *)disappearingMessagesJob contactDiscoveryService:(ContactDiscoveryService *)contactDiscoveryService - disappearingMessagesJob:(OWSReadReceiptManager *)readReceiptManager - contactDiscoveryService:(OWSOutgoingReceiptManager *)outgoingReceiptManager NS_DESIGNATED_INITIALIZER; + readReceiptManager:(OWSReadReceiptManager *)readReceiptManager + outgoingReceiptManager:(OWSOutgoingReceiptManager *)outgoingReceiptManager + syncManager:(id)syncManager NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE; @@ -83,6 +85,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) ContactDiscoveryService *contactDiscoveryService; @property (nonatomic, readonly) OWSReadReceiptManager *readReceiptManager; @property (nonatomic, readonly) OWSOutgoingReceiptManager *outgoingReceiptManager; +@property (nonatomic, readonly) id syncManager; // This property is configured after Environment is created. @property (atomic, nullable) id callMessageHandler; diff --git a/SignalServiceKit/src/SSKEnvironment.m b/SignalServiceKit/src/SSKEnvironment.m index 8aefcc811..a3f003d0b 100644 --- a/SignalServiceKit/src/SSKEnvironment.m +++ b/SignalServiceKit/src/SSKEnvironment.m @@ -32,6 +32,7 @@ static SSKEnvironment *sharedSSKEnvironment; @property (nonatomic) ContactDiscoveryService *contactDiscoveryService; @property (nonatomic) OWSReadReceiptManager *readReceiptManager; @property (nonatomic) OWSOutgoingReceiptManager *outgoingReceiptManager; +@property (nonatomic) id syncManager; @end @@ -64,9 +65,9 @@ static SSKEnvironment *sharedSSKEnvironment; ows2FAManager:(OWS2FAManager *)ows2FAManager disappearingMessagesJob:(OWSDisappearingMessagesJob *)disappearingMessagesJob contactDiscoveryService:(ContactDiscoveryService *)contactDiscoveryService - disappearingMessagesJob:(OWSReadReceiptManager *)readReceiptManager - contactDiscoveryService:(OWSOutgoingReceiptManager *)outgoingReceiptManager -{ + readReceiptManager:(OWSReadReceiptManager *)readReceiptManager + outgoingReceiptManager:(OWSOutgoingReceiptManager *)outgoingReceiptManager + syncManager:(id)syncManager { self = [super init]; if (!self) { return self; @@ -92,6 +93,7 @@ static SSKEnvironment *sharedSSKEnvironment; OWSAssertDebug(contactDiscoveryService); OWSAssertDebug(readReceiptManager); OWSAssertDebug(outgoingReceiptManager); + OWSAssertDebug(syncManager); _contactsManager = contactsManager; _messageSender = messageSender; @@ -113,6 +115,7 @@ static SSKEnvironment *sharedSSKEnvironment; _contactDiscoveryService = contactDiscoveryService; _readReceiptManager = readReceiptManager; _outgoingReceiptManager = outgoingReceiptManager; + _syncManager = syncManager; return self; } diff --git a/SignalServiceKit/src/SignalServiceKit.h b/SignalServiceKit/src/SignalServiceKit.h index 593f09ef4..a702a7b22 100644 --- a/SignalServiceKit/src/SignalServiceKit.h +++ b/SignalServiceKit/src/SignalServiceKit.h @@ -5,3 +5,4 @@ // Anything used by Swift outside of the framework must be imported. #import "OWSFileSystem.h" #import "OWSOperation.h" +#import "OWSSyncManagerProtocol.h" diff --git a/SignalServiceKit/src/TestUtils/MockSSKEnvironment.m b/SignalServiceKit/src/TestUtils/MockSSKEnvironment.m index a1699492d..c55a09885 100644 --- a/SignalServiceKit/src/TestUtils/MockSSKEnvironment.m +++ b/SignalServiceKit/src/TestUtils/MockSSKEnvironment.m @@ -72,6 +72,7 @@ NS_ASSUME_NONNULL_BEGIN OWSReadReceiptManager *readReceiptManager = [[OWSReadReceiptManager alloc] initWithPrimaryStorage:primaryStorage]; OWSOutgoingReceiptManager *outgoingReceiptManager = [[OWSOutgoingReceiptManager alloc] initWithPrimaryStorage:primaryStorage]; + id syncManager = [[OWSMockSyncManager alloc] init]; self = [super initWithContactsManager:contactsManager messageSender:messageSender @@ -91,11 +92,13 @@ NS_ASSUME_NONNULL_BEGIN ows2FAManager:ows2FAManager disappearingMessagesJob:disappearingMessagesJob contactDiscoveryService:contactDiscoveryService - disappearingMessagesJob:readReceiptManager - contactDiscoveryService:outgoingReceiptManager]; + readReceiptManager:readReceiptManager + outgoingReceiptManager:outgoingReceiptManager + syncManager:syncManager]; if (!self) { return nil; } + self.callMessageHandler = [OWSFakeCallMessageHandler new]; self.notificationsManager = [OWSFakeNotificationsManager new]; return self; diff --git a/SignalServiceKit/src/TestUtils/OWSMockSyncManager.swift b/SignalServiceKit/src/TestUtils/OWSMockSyncManager.swift new file mode 100644 index 000000000..cd3cf9eb5 --- /dev/null +++ b/SignalServiceKit/src/TestUtils/OWSMockSyncManager.swift @@ -0,0 +1,17 @@ +// +// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// + +import Foundation + +#if DEBUG + +@objc +public class OWSMockSyncManager: NSObject, OWSSyncManagerProtocol { + + @objc public func sendConfigurationSyncMessage() { + Logger.info("") + } +} + +#endif diff --git a/SignalServiceKit/src/Util/OWSSyncManagerProtocol.h b/SignalServiceKit/src/Util/OWSSyncManagerProtocol.h new file mode 100644 index 000000000..73540e29e --- /dev/null +++ b/SignalServiceKit/src/Util/OWSSyncManagerProtocol.h @@ -0,0 +1,13 @@ +// +// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// + +NS_ASSUME_NONNULL_BEGIN + +@protocol OWSSyncManagerProtocol + +- (void)sendConfigurationSyncMessage; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SignalShareExtension/ShareViewController.swift b/SignalShareExtension/ShareViewController.swift index bc6c5eff1..38c42875e 100644 --- a/SignalShareExtension/ShareViewController.swift +++ b/SignalShareExtension/ShareViewController.swift @@ -104,9 +104,6 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed // We don't need to use "screen protection" in the SAE. - // Ensure OWSSyncManager is instantiated. - OWSSyncManager.shared() - NotificationCenter.default.addObserver(self, selector: #selector(storageIsReady), name: .StorageIsReady, diff --git a/SignalShareExtension/SignalShareExtension-Bridging-Header.h b/SignalShareExtension/SignalShareExtension-Bridging-Header.h index e8f71533e..c7a9dd1b8 100644 --- a/SignalShareExtension/SignalShareExtension-Bridging-Header.h +++ b/SignalShareExtension/SignalShareExtension-Bridging-Header.h @@ -16,7 +16,6 @@ #import #import #import -#import #import #import #import