From 3c4f27f3f4f47f8e59bb74469e020aa416e841dd Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 17 Jun 2025 11:24:26 -0400 Subject: [PATCH] Fix profile fetch debounce bug when profile key changes. --- .../org/thoughtcrime/securesms/database/RecipientTable.kt | 2 ++ .../org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt index f39f6b72b3..ee9d0c5c97 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt @@ -1633,6 +1633,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da put(PROFILE_KEY, encodedProfileKey) putNull(EXPIRING_PROFILE_KEY_CREDENTIAL) put(SEALED_SENDER_MODE, SealedSenderAccessMode.UNKNOWN.mode) + put(LAST_PROFILE_FETCH, 0) } val updateQuery = SqlUtil.buildTrueUpdateQuery(selection, args, valuesToCompare) @@ -1665,6 +1666,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da put(PROFILE_KEY, Base64.encodeWithPadding(profileKey.serialize())) putNull(EXPIRING_PROFILE_KEY_CREDENTIAL) put(SEALED_SENDER_MODE, SealedSenderAccessMode.UNKNOWN.mode) + put(LAST_PROFILE_FETCH, 0) } if (writableDatabase.update(TABLE_NAME, valuesToSet, selection, args) > 0) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt index 41a7b18588..941763dca8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt @@ -87,12 +87,13 @@ class RetrieveProfileJob private constructor(parameters: Parameters, private val val stopwatch = Stopwatch("RetrieveProfile") + val recipients = recipientIds.map { Recipient.live(it).refresh().resolve() } + RecipientUtil.ensureUuidsAreAvailable( context, - Recipient.resolvedList(recipientIds).filter { it.registered != RecipientTable.RegisteredState.NOT_REGISTERED } + recipients.filter { it.registered != RecipientTable.RegisteredState.NOT_REGISTERED } ) - val recipients = Recipient.resolvedList(recipientIds) stopwatch.split("resolve-ensure") val currentTime = System.currentTimeMillis()