From 2d2de1a6523ad1c074f02efb3b356b7ed84baedb Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 12 May 2021 10:56:34 -0400 Subject: [PATCH] Fix storage service record merge. --- .../securesms/keyvalue/PaymentsValues.java | 5 +++-- .../storage/AccountRecordProcessor.java | 17 ++++++++++++++--- .../api/storage/SignalAccountRecord.java | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.java index c4e70570d1..8b7c83b791 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.java @@ -308,6 +308,9 @@ public final class PaymentsValues extends SignalStoreValues { Currency.getInstance(DEFAULT_CURRENCY_CODE)); } + /** + * Does not trigger a storage sync. + */ public void setEnabledAndEntropy(boolean enabled, @Nullable Entropy entropy) { KeyValueStore.Writer writer = getStore().beginWrite(); @@ -317,8 +320,6 @@ public final class PaymentsValues extends SignalStoreValues { writer.putBoolean(MOB_PAYMENTS_ENABLED, enabled) .commit(); - - StorageSyncHelper.scheduleSyncForDataChange(); } @WorkerThread diff --git a/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java index b819079675..a894551b12 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/storage/AccountRecordProcessor.java @@ -78,6 +78,14 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor pinnedConversations = remote.getPinnedConversations(); AccountRecord.PhoneNumberSharingMode phoneNumberSharingMode = remote.getPhoneNumberSharingMode(); boolean preferContactAvatars = remote.isPreferContactAvatars(); - boolean matchesRemote = doParamsMatch(remote, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars); - boolean matchesLocal = doParamsMatch(local, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars); + boolean matchesRemote = doParamsMatch(remote, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars, payments); + boolean matchesLocal = doParamsMatch(local, unknownFields, givenName, familyName, avatarUrlPath, profileKey, noteToSelfArchived, noteToSelfForcedUnread, readReceipts, typingIndicators, sealedSenderIndicators, linkPreviews, phoneNumberSharingMode, unlisted, pinnedConversations, preferContactAvatars, payments); if (matchesRemote) { return remote; @@ -116,6 +124,7 @@ public class AccountRecordProcessor extends DefaultStorageRecordProcessor pinnedConversations, - boolean preferContactAvatars) + boolean preferContactAvatars, + SignalAccountRecord.Payments payments) { return Arrays.equals(contact.serializeUnknownFields(), unknownFields) && Objects.equals(contact.getGivenName().or(""), givenName) && Objects.equals(contact.getFamilyName().or(""), familyName) && Objects.equals(contact.getAvatarUrlPath().or(""), avatarUrlPath) && + Objects.equals(contact.getPayments(), payments) && Arrays.equals(contact.getProfileKey().orNull(), profileKey) && contact.isNoteToSelfArchived() == noteToSelfArchived && contact.isNoteToSelfForcedUnread() == noteToSelfForcedUnread && diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java index 034512c61b..89d6b0f610 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/storage/SignalAccountRecord.java @@ -126,7 +126,7 @@ public final class SignalAccountRecord implements SignalRecord { } if (!Objects.equals(this.payments, that.payments)) { - diff.add("PreferContactAvatars"); + diff.add("Payments"); } if (!Objects.equals(this.hasUnknownFields(), that.hasUnknownFields())) {