Only handle the first config sync message after restoration

pull/350/head
nielsandriesse 3 years ago
parent 517360a773
commit 4803b96eb1

@ -219,4 +219,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: bb4f6cffd6e7c08814b945e1787d01d639036b1e PODFILE CHECKSUM: bb4f6cffd6e7c08814b945e1787d01d639036b1e
COCOAPODS: 1.10.0.rc.1 COCOAPODS: 1.10.1

@ -144,7 +144,7 @@ extension MessageReceiver {
} }
private static func handleConfigurationMessage(_ message: ConfigurationMessage, using transaction: Any) { private static func handleConfigurationMessage(_ message: ConfigurationMessage, using transaction: Any) {
guard message.sender == getUserHexEncodedPublicKey() else { return } guard message.sender == getUserHexEncodedPublicKey(), !UserDefaults.standard[.hasSyncedConfiguration] else { return }
let storage = SNMessagingKitConfiguration.shared.storage let storage = SNMessagingKitConfiguration.shared.storage
let allClosedGroupPublicKeys = storage.getUserClosedGroupPublicKeys() let allClosedGroupPublicKeys = storage.getUserClosedGroupPublicKeys()
for closedGroup in message.closedGroups { for closedGroup in message.closedGroups {
@ -157,6 +157,7 @@ extension MessageReceiver {
guard !allOpenGroups.contains(openGroupURL) else { continue } guard !allOpenGroups.contains(openGroupURL) else { continue }
OpenGroupManager.shared.add(with: openGroupURL, using: transaction).retainUntilComplete() OpenGroupManager.shared.add(with: openGroupURL, using: transaction).retainUntilComplete()
} }
UserDefaults.standard[.hasSyncedConfiguration] = true
} }
@discardableResult @discardableResult

@ -364,6 +364,7 @@ public final class MessageSender : NSObject {
OWSDisappearingMessagesJob.shared().startAnyExpiration(for: tsMessage, expirationStartedAt: NSDate.millisecondTimestamp(), transaction: transaction) OWSDisappearingMessagesJob.shared().startAnyExpiration(for: tsMessage, expirationStartedAt: NSDate.millisecondTimestamp(), transaction: transaction)
// Sync the message if: // Sync the message if:
// it's a visible message // it's a visible message
// the destination was a contact
// we didn't sync it already // we didn't sync it already
let userPublicKey = getUserHexEncodedPublicKey() let userPublicKey = getUserHexEncodedPublicKey()
if case .contact(let publicKey) = destination, !isSyncMessage, let message = message as? VisibleMessage { if case .contact(let publicKey) = destination, !isSyncMessage, let message = message as? VisibleMessage {

@ -5,6 +5,7 @@ public enum SNUserDefaults {
public enum Bool : Swift.String { public enum Bool : Swift.String {
case hasLaunchedOnce case hasLaunchedOnce
case hasSeenGIFMetadataWarning case hasSeenGIFMetadataWarning
case hasSyncedConfiguration
case hasViewedSeed case hasViewedSeed
case isUsingFullAPNs case isUsingFullAPNs
case isMigratingToV2KeyPair case isMigratingToV2KeyPair

Loading…
Cancel
Save