From 38ad0903ffec23a23756e99bfd2beb71809792f4 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 17 Dec 2025 09:12:08 -0400 Subject: [PATCH] Fix issue where attachment albums do not update if one object is deleted. --- .../thoughtcrime/securesms/database/AttachmentTable.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt index 35b8f7289d..32cddc69f3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt @@ -97,6 +97,7 @@ import org.thoughtcrime.securesms.database.AttachmentTable.Companion.TRANSFER_PR import org.thoughtcrime.securesms.database.MessageTable.SyncMessageId import org.thoughtcrime.securesms.database.SignalDatabase.Companion.messages import org.thoughtcrime.securesms.database.SignalDatabase.Companion.threads +import org.thoughtcrime.securesms.database.model.MessageId import org.thoughtcrime.securesms.database.model.databaseprotos.AudioWaveFormData import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob @@ -1335,9 +1336,10 @@ class AttachmentTable( val filePathsToDelete = mutableSetOf() val contentTypesToDelete = mutableSetOf() + var deletedMessageId: Long? = null writableDatabase.withinTransaction { db -> - db.select(DATA_FILE, CONTENT_TYPE) + db.select(DATA_FILE, CONTENT_TYPE, MESSAGE_ID) .from(TABLE_NAME) .where("$ID = ?", id.id) .run() @@ -1349,6 +1351,7 @@ class AttachmentTable( val filePath = cursor.requireString(DATA_FILE) val contentType = cursor.requireString(CONTENT_TYPE) + deletedMessageId = cursor.requireLong(MESSAGE_ID) db.delete(TABLE_NAME) .where("$ID = ?", id.id) @@ -1363,6 +1366,10 @@ class AttachmentTable( } } + deletedMessageId?.let { + AppDependencies.databaseObserver.notifyMessageUpdateObservers(MessageId(it)) + } + deleteDataFiles(filePathsToDelete, contentTypesToDelete) }