From e4dbca1a809143d8f8bb0e68d8c29431bd9103c5 Mon Sep 17 00:00:00 2001 From: SessionHero01 <180888785+SessionHero01@users.noreply.github.com> Date: Wed, 11 Dec 2024 11:14:36 +0800 Subject: [PATCH] Do not delete link previews or audio message while deleting attachment (#839) --- .../securesms/configs/ConfigToDatabaseSync.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigToDatabaseSync.kt b/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigToDatabaseSync.kt index 31cc267015..0cb8e81d0f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigToDatabaseSync.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigToDatabaseSync.kt @@ -43,6 +43,7 @@ import org.thoughtcrime.securesms.database.MmsDatabase import org.thoughtcrime.securesms.database.MmsSmsDatabase import org.thoughtcrime.securesms.database.RecipientDatabase import org.thoughtcrime.securesms.database.ThreadDatabase +import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.dependencies.PollerFactory import org.thoughtcrime.securesms.groups.ClosedGroupManager import org.thoughtcrime.securesms.groups.OpenGroupManager @@ -209,13 +210,24 @@ class ConfigToDatabaseSync @Inject constructor( } groupInfoConfig.deleteAttachmentsBefore?.let { removeAttachmentsBefore -> val messagesWithAttachment = mmsSmsDatabase.getAllMessageRecordsBefore(threadId, TimeUnit.SECONDS.toMillis(removeAttachmentsBefore)) - .filterTo(mutableSetOf()) { it.isMms } + .filterTo(mutableSetOf()) { it is MmsMessageRecord && ( + // Must not be a link preview, or an audio message + !it.isLinkPreview && !it.isAudioMessage) + } conversationRepository.markAsDeletedLocally(messagesWithAttachment, context.getString(R.string.deleteMessageDeletedGlobally)) } } } + // Whether this mms message is purely a link preview + private val MmsMessageRecord.isLinkPreview: Boolean + get() = this.slideDeck.slides.isEmpty() && this.linkPreviews.isNotEmpty() + + // Whether this message is purely an audio message + private val MmsMessageRecord.isAudioMessage: Boolean + get() = this.slideDeck.audioSlide != null + private data class UpdateContacts(val contacts: List) private fun updateContacts(contacts: UpdateContacts, messageTimestamp: Long?) {