diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist
index c49053bcc..9d7c02e10 100644
--- a/Signal/Signal-Info.plist
+++ b/Signal/Signal-Info.plist
@@ -5,7 +5,7 @@
BuildDetails
CarthageVersion
- 0.33.0
+ 0.34.0
OSXVersion
10.15.2
WebRTCCommit
diff --git a/Signal/src/Loki/View Controllers/DeviceLinkingModal.swift b/Signal/src/Loki/View Controllers/DeviceLinkingModal.swift
index b2a304ea3..195dd5669 100644
--- a/Signal/src/Loki/View Controllers/DeviceLinkingModal.swift
+++ b/Signal/src/Loki/View Controllers/DeviceLinkingModal.swift
@@ -165,8 +165,8 @@ final class DeviceLinkingModal : Modal, DeviceLinkingSessionDelegate {
let linkingAuthorizationMessage = DeviceLinkingUtilities.getLinkingAuthorizationMessage(for: deviceLink)
ThreadUtil.enqueue(linkingAuthorizationMessage)
SSKEnvironment.shared.messageSender.send(linkingAuthorizationMessage, success: {
- let _ = SSKEnvironment.shared.syncManager.syncAllContacts()
-// _ = SSKEnvironment.shared.syncManager.syncAllGroups()
+ let _ = [SSKEnvironment.shared.syncManager.syncAllContacts(),
+ SSKEnvironment.shared.syncManager.syncAllGroups()]
}) { _ in
print("[Loki] Failed to send device link authorization message.")
}
diff --git a/SignalMessaging/contacts/OWSSyncManager.m b/SignalMessaging/contacts/OWSSyncManager.m
index 4c4df6d87..2ebbc95ee 100644
--- a/SignalMessaging/contacts/OWSSyncManager.m
+++ b/SignalMessaging/contacts/OWSSyncManager.m
@@ -288,15 +288,21 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag
if (hexEncodedPublicKey != nil && thread.isContactFriend && thread.shouldThreadBeVisible && !thread.isForceHidden) {
[friends addObject:[[SignalAccount alloc] initWithRecipientId:hexEncodedPublicKey]];
}
- if (friends.count >= 2) {
- [promises addObject:[self syncContactsForSignalAccounts:friends]];
- [friends removeAllObjects];
- }
}];
- if (friends.count > 0) {
- [promises addObject:[self syncContactsForSignalAccounts:friends]];
+ NSMutableArray *signalAccounts = @[].mutableCopy;
+ for (SignalAccount *contact in friends) {
+ [signalAccounts addObject:contact];
+ if (signalAccounts.count >= 2) {
+ [promises addObject:[self syncContactsForSignalAccounts:signalAccounts]];
+ [signalAccounts removeAllObjects];
+ }
}
- return PMKJoin(promises);
+ if (signalAccounts.count > 0) {
+ [promises addObject:[self syncContactsForSignalAccounts:signalAccounts]];
+ }
+ AnyPromise *promise = PMKJoin(promises);
+ [promise retainUntilComplete];
+ return promise;
}
- (AnyPromise *)syncContactsForSignalAccounts:(NSArray *)signalAccounts
@@ -319,13 +325,19 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag
- (AnyPromise *)syncAllGroups
{
+ NSMutableArray *groupThreads = @[].mutableCopy;
NSMutableArray *promises = @[].mutableCopy;
[TSGroupThread enumerateCollectionObjectsUsingBlock:^(TSGroupThread *thread, BOOL *stop) {
- if (thread.groupModel && thread.shouldThreadBeVisible && !thread.isForceHidden) {
- [promises addObject:[self syncGroupForThread:thread]];
+ if (thread.groupModel.groupType == closedGroup && thread.shouldThreadBeVisible && !thread.isForceHidden) {
+ [groupThreads addObject:thread];
}
}];
- return PMKJoin(promises);
+ for (TSGroupThread *groupThread in groupThreads) {
+ [promises addObject:[self syncGroupForThread:groupThread]];
+ }
+ AnyPromise *promise = PMKJoin(promises);
+ [promise retainUntilComplete];
+ return promise;
}
- (AnyPromise *)syncGroupForThread:(TSGroupThread *)thread