diff --git a/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift b/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift index 79ef663a6..783c8af68 100644 --- a/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift +++ b/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift @@ -56,7 +56,7 @@ class ConversationConfigurationSyncOperation: OWSOperation { return } - syncManager.syncContacts(for: [signalAccount]) + syncManager.syncContacts(for: [signalAccount]).retainUntilComplete() } private func sync(groupThread: TSGroupThread) { diff --git a/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m index bb0baad3c..b7ef29180 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUISyncMessages.m @@ -8,6 +8,7 @@ #import "Signal-Swift.h" #import "ThreadUtil.h" #import +#import #import #import #import @@ -102,7 +103,7 @@ NS_ASSUME_NONNULL_BEGIN + (void)sendContactsSyncMessage { - [self.syncManager syncAllContacts]; + [[self.syncManager syncAllContacts] retainUntilComplete]; } + (void)sendGroupSyncMessage diff --git a/Signal/src/util/Backup/OWSBackup.h b/Signal/src/util/Backup/OWSBackup.h index 20a2246be..4ad58c34e 100644 --- a/Signal/src/util/Backup/OWSBackup.h +++ b/Signal/src/util/Backup/OWSBackup.h @@ -77,7 +77,7 @@ NSError *OWSBackupErrorWithDescription(NSString *description); - (void)allRecipientIdsWithManifestsInCloud:(OWSBackupStringListBlock)success failure:(OWSBackupErrorBlock)failure; -- (AnyPromise *)ensureCloudKitAccess; +- (AnyPromise *)ensureCloudKitAccess __attribute__((warn_unused_result)); - (void)checkCanImportBackup:(OWSBackupBoolBlock)success failure:(OWSBackupErrorBlock)failure; @@ -98,7 +98,7 @@ NSError *OWSBackupErrorWithDescription(NSString *description); - (NSArray *)attachmentIdsForLazyRestore; -- (AnyPromise *)lazyRestoreAttachment:(TSAttachmentPointer *)attachment backupIO:(OWSBackupIO *)backupIO; +- (AnyPromise *)lazyRestoreAttachment:(TSAttachmentPointer *)attachment backupIO:(OWSBackupIO *)backupIO __attribute__((warn_unused_result)); @end diff --git a/Signal/src/util/Backup/OWSBackupJob.h b/Signal/src/util/Backup/OWSBackupJob.h index 1c7c61f73..f82ce0ccf 100644 --- a/Signal/src/util/Backup/OWSBackupJob.h +++ b/Signal/src/util/Backup/OWSBackupJob.h @@ -85,7 +85,7 @@ typedef void (^OWSBackupJobManifestFailure)(NSError *error); #pragma mark - Manifest -- (AnyPromise *)downloadAndProcessManifestWithBackupIO:(OWSBackupIO *)backupIO; +- (AnyPromise *)downloadAndProcessManifestWithBackupIO:(OWSBackupIO *)backupIO __attribute__((warn_unused_result)); @end diff --git a/SignalMessaging/profiles/OWSProfileManager.m b/SignalMessaging/profiles/OWSProfileManager.m index 23432e735..445efd0db 100644 --- a/SignalMessaging/profiles/OWSProfileManager.m +++ b/SignalMessaging/profiles/OWSProfileManager.m @@ -244,7 +244,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error); // // NOTE: We also inform the desktop in the failure case, // since that _may have_ affected service state. - [self.syncManager syncLocalContact]; + [[self.syncManager syncLocalContact] retainUntilComplete]; dispatch_async(dispatch_get_main_queue(), ^{ failureBlockParameter(); @@ -256,7 +256,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error); // We use a "self-only" contact sync to indicate to desktop // that we've changed our profile and that it should do a // profile fetch for "self". - [self.syncManager syncLocalContact]; + [[self.syncManager syncLocalContact] retainUntilComplete]; dispatch_async(dispatch_get_main_queue(), ^{ successBlockParameter(); diff --git a/SignalMessaging/profiles/OWSUserProfile.m b/SignalMessaging/profiles/OWSUserProfile.m index 3a798481d..f1775a946 100644 --- a/SignalMessaging/profiles/OWSUserProfile.m +++ b/SignalMessaging/profiles/OWSUserProfile.m @@ -3,6 +3,7 @@ // #import "OWSUserProfile.h" +#import #import #import #import @@ -11,6 +12,7 @@ #import #import #import +#import #import #import #import @@ -227,7 +229,7 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId"; // we have a registered account, syncing will fail (and there could not be any // linked device to sync to at this point anyway). if ([self.tsAccountManager isRegistered] && CurrentAppContext().isMainApp) { - [self.syncManager syncLocalContact]; + [[self.syncManager syncLocalContact] retainUntilComplete]; } [[NSNotificationCenter defaultCenter] postNotificationNameAsync:kNSNotificationName_LocalProfileDidChange diff --git a/SignalServiceKit/src/Account/TSAccountManager.h b/SignalServiceKit/src/Account/TSAccountManager.h index d6205a5b0..27dff48e5 100644 --- a/SignalServiceKit/src/Account/TSAccountManager.h +++ b/SignalServiceKit/src/Account/TSAccountManager.h @@ -148,16 +148,16 @@ typedef NS_ENUM(NSUInteger, OWSRegistrationState) { #pragma mark - Manual Message Fetch - (BOOL)isManualMessageFetchEnabled; -- (AnyPromise *)setIsManualMessageFetchEnabled:(BOOL)value; +- (AnyPromise *)setIsManualMessageFetchEnabled:(BOOL)value __attribute__((warn_unused_result)); #ifdef DEBUG - (void)registerForTestsWithLocalNumber:(NSString *)localNumber; #endif -- (AnyPromise *)updateAccountAttributes; +- (AnyPromise *)updateAccountAttributes __attribute__((warn_unused_result)); // This should only be used during the registration process. -- (AnyPromise *)performUpdateAccountAttributes; +- (AnyPromise *)performUpdateAccountAttributes __attribute__((warn_unused_result)); @end diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 59dd0c543..e8652d5d9 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -901,7 +901,7 @@ NS_ASSUME_NONNULL_BEGIN // In rare cases this means we won't respond to the sync request, but that's // acceptable. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - [self.syncManager syncAllContacts]; + [[self.syncManager syncAllContacts] retainUntilComplete]; }); } else if (syncMessage.request.type == SSKProtoSyncMessageRequestTypeGroups) { OWSSyncGroupsMessage *syncGroupsMessage = [[OWSSyncGroupsMessage alloc] init]; diff --git a/SignalServiceKit/src/Util/OWSSyncManagerProtocol.h b/SignalServiceKit/src/Util/OWSSyncManagerProtocol.h index e4e3fa090..da5e28684 100644 --- a/SignalServiceKit/src/Util/OWSSyncManagerProtocol.h +++ b/SignalServiceKit/src/Util/OWSSyncManagerProtocol.h @@ -11,11 +11,11 @@ NS_ASSUME_NONNULL_BEGIN - (void)sendConfigurationSyncMessage; -- (AnyPromise *)syncLocalContact; +- (AnyPromise *)syncLocalContact __attribute__((warn_unused_result)); -- (AnyPromise *)syncAllContacts; +- (AnyPromise *)syncAllContacts __attribute__((warn_unused_result)); -- (AnyPromise *)syncContactsForSignalAccounts:(NSArray *)signalAccounts; +- (AnyPromise *)syncContactsForSignalAccounts:(NSArray *)signalAccounts __attribute__((warn_unused_result)); @end