From ecc6a7b95e955a9c95c8553002caa658a40b929f Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Feb 2022 10:56:00 -0500 Subject: [PATCH] Improving handling of profile key updates for ourselves. --- .../thoughtcrime/securesms/database/RecipientDatabase.kt | 2 +- .../securesms/messages/MessageContentProcessor.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt index b14245547..44c51773c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt @@ -933,7 +933,7 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) : } } - val updateCount = writableDatabase.update(TABLE_NAME, values, STORAGE_SERVICE_ID + " = ?", arrayOf(Base64.encodeBytes(update.old.id.raw))) + val updateCount = writableDatabase.update(TABLE_NAME, values, "$STORAGE_SERVICE_ID = ?", arrayOf(Base64.encodeBytes(update.old.id.raw))) if (updateCount < 1) { throw AssertionError("Account update didn't match any rows!") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java index cef473735..7ced42817 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java @@ -170,6 +170,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Objects; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -1772,7 +1773,12 @@ public final class MessageContentProcessor { RecipientDatabase database = SignalDatabase.recipients(); ProfileKey messageProfileKey = ProfileKeyUtil.profileKeyOrNull(messageProfileKeyBytes); - if (messageProfileKey != null) { + if (senderRecipient.isSelf()) { + if (!Objects.equals(ProfileKeyUtil.getSelfProfileKey(), messageProfileKey)) { + warn(content.getTimestamp(), "Saw a sync message whose profile key doesn't match our records. Scheduling a storage sync to check."); + StorageSyncHelper.scheduleSyncForDataChange(); + } + } else if (messageProfileKey != null) { if (database.setProfileKey(senderRecipient.getId(), messageProfileKey)) { log(content.getTimestamp(), "Profile key on message from " + senderRecipient.getId() + " didn't match our local store. It has been updated."); ApplicationDependencies.getJobManager().add(RetrieveProfileJob.forRecipient(senderRecipient.getId()));