From b21f793756dabf39e1d1035ff6b68c435a727e64 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 26 Jan 2018 16:23:39 -0500 Subject: [PATCH] Register all database views asynchronously. --- Signal/src/network/PushManager.m | 11 ++++++++--- .../contacts/SystemContactsFetcher.swift | 18 ++++++++++-------- .../src/Messages/OWSBlockingManager.m | 11 +++++++---- .../src/Messages/OWSDisappearingMessagesJob.m | 5 ++++- .../src/Network/WebSockets/TSSocketManager.m | 5 +++++ 5 files changed, 34 insertions(+), 16 deletions(-) diff --git a/Signal/src/network/PushManager.m b/Signal/src/network/PushManager.m index cf61d5b95..920d9eeca 100644 --- a/Signal/src/network/PushManager.m +++ b/Signal/src/network/PushManager.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import "PushManager.h" @@ -9,6 +9,7 @@ #import "SignalApp.h" #import "ThreadUtil.h" #import +#import #import #import #import @@ -108,11 +109,15 @@ NSString *const Signal_Message_MarkAsRead_Identifier = @"Signal_Message_MarkAsRe { DDLogInfo(@"%@ received remote notification", self.logTag); - [self.messageFetcherJob run]; + [AppReadiness runNowOrWhenAppIsReady:^{ + [self.messageFetcherJob run]; + }]; } - (void)applicationDidBecomeActive { - [self.messageFetcherJob run]; + [AppReadiness runNowOrWhenAppIsReady:^{ + [self.messageFetcherJob run]; + }]; } /** diff --git a/SignalMessaging/contacts/SystemContactsFetcher.swift b/SignalMessaging/contacts/SystemContactsFetcher.swift index aecbf6d88..8f12e0c01 100644 --- a/SignalMessaging/contacts/SystemContactsFetcher.swift +++ b/SignalMessaging/contacts/SystemContactsFetcher.swift @@ -62,16 +62,18 @@ class ContactsFrameworkContactStoreAdaptee: ContactStoreAdaptee { @objc func didBecomeActive() { - let currentSortOrder = CNContactsUserDefaults.shared().sortOrder + AppReadiness.runNowOr { + let currentSortOrder = CNContactsUserDefaults.shared().sortOrder - guard currentSortOrder != self.lastSortOrder else { - // sort order unchanged - return - } + guard currentSortOrder != self.lastSortOrder else { + // sort order unchanged + return + } - Logger.info("\(TAG) sort order changed: \(String(describing: self.lastSortOrder)) -> \(String(describing: currentSortOrder))") - self.lastSortOrder = currentSortOrder - self.runChangeHandler() + Logger.info("\(self.TAG) sort order changed: \(String(describing: self.lastSortOrder)) -> \(String(describing: currentSortOrder))") + self.lastSortOrder = currentSortOrder + self.runChangeHandler() + } } @objc diff --git a/SignalServiceKit/src/Messages/OWSBlockingManager.m b/SignalServiceKit/src/Messages/OWSBlockingManager.m index 55f757de4..00177d391 100644 --- a/SignalServiceKit/src/Messages/OWSBlockingManager.m +++ b/SignalServiceKit/src/Messages/OWSBlockingManager.m @@ -4,6 +4,7 @@ #import "OWSBlockingManager.h" #import "AppContext.h" +#import "AppReadiness.h" #import "NSNotificationCenter+OWS.h" #import "OWSBlockedPhoneNumbersMessage.h" #import "OWSMessageSender.h" @@ -288,10 +289,12 @@ NSString *const kOWSBlockingManager_SyncedBlockedPhoneNumbersKey = @"kOWSBlockin { OWSAssertIsOnMainThread(); - @synchronized(self) - { - [self syncBlockedPhoneNumbersIfNecessary]; - } + [AppReadiness runNowOrWhenAppIsReady:^{ + @synchronized(self) + { + [self syncBlockedPhoneNumbersIfNecessary]; + } + }]; } @end diff --git a/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m b/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m index aa5a0e7ce..16c058ef4 100644 --- a/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m +++ b/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m @@ -4,6 +4,7 @@ #import "OWSDisappearingMessagesJob.h" #import "AppContext.h" +#import "AppReadiness.h" #import "ContactsManagerProtocol.h" #import "NSDate+OWS.h" #import "NSTimer+OWS.h" @@ -393,7 +394,9 @@ NS_ASSUME_NONNULL_BEGIN { OWSAssertIsOnMainThread(); - [self runNow]; + [AppReadiness runNowOrWhenAppIsReady:^{ + [self runNow]; + }]; } - (void)applicationWillResignActive:(NSNotification *)notification diff --git a/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m b/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m index 1e8036ba9..a0f1115c1 100644 --- a/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m +++ b/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m @@ -4,6 +4,7 @@ #import "TSSocketManager.h" #import "AppContext.h" +#import "AppReadiness.h" #import "Cryptography.h" #import "NSNotificationCenter+OWS.h" #import "NSTimer+OWS.h" @@ -608,6 +609,10 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_ { OWSAssertIsOnMainThread(); + if (!AppReadiness.isAppReady) { + return; + } + if ([self shouldSocketBeOpen]) { if (self.state != SocketManagerStateOpen) { // If we want the socket to be open and it's not open,