From bc6face873ef0f81fd696214654155b44b3785cb Mon Sep 17 00:00:00 2001 From: Clark Date: Fri, 19 Jul 2024 14:22:21 -0400 Subject: [PATCH] Fix edit message clearing story reply quote. --- .../thoughtcrime/securesms/database/MessageTable.kt | 13 ++++++++++++- .../securesms/messages/EditMessageProcessor.kt | 4 +++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index f386cabfa2..e98b91b340 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -2966,6 +2966,17 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat } } + val parentStoryId: Long = if (editedMessage == null) { + if (message.parentStoryId != null) message.parentStoryId.serialize() else 0 + } else { + val originalId = (editedMessage as? MmsMessageRecord)?.parentStoryId + if (originalId != null && message.outgoingQuote != null) { + originalId.serialize() + } else { + 0L + } + } + val contentValues = ContentValues() contentValues.put(DATE_SENT, message.sentTimeMillis) contentValues.put(TYPE, type) @@ -2981,7 +2992,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat contentValues.put(HAS_DELIVERY_RECEIPT, earlyDeliveryReceipts.values.sumOf { it.count }) contentValues.put(RECEIPT_TIMESTAMP, earlyDeliveryReceipts.values.map { it.timestamp }.maxOrNull() ?: -1L) contentValues.put(STORY_TYPE, message.storyType.code) - contentValues.put(PARENT_STORY_ID, if (message.parentStoryId != null) message.parentStoryId.serialize() else 0) + contentValues.put(PARENT_STORY_ID, parentStoryId) contentValues.put(SCHEDULED_DATE, message.scheduledDate) contentValues.putNull(LATEST_REVISION_ID) contentValues.put(MESSAGE_EXTRAS, message.messageExtras?.encode()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt index 98b4ef20d3..6f9a5fe0dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt @@ -122,7 +122,7 @@ object EditMessageProcessor { ): InsertResult? { val messageRanges: BodyRangeList? = message.bodyRanges.filter { it.mentionAci == null }.toList().toBodyRangeList() val targetQuote = targetMessage.quote - val quote: QuoteModel? = if (targetQuote != null && message.quote != null) { + val quote: QuoteModel? = if (targetQuote != null && (message.quote != null || (targetMessage.parentStoryId != null && message.storyContext != null))) { QuoteModel( targetQuote.id, targetQuote.author, @@ -153,6 +153,7 @@ object EditMessageProcessor { groupId = groupId, attachments = attachments, quote = quote, + parentStoryId = targetMessage.parentStoryId, sharedContacts = emptyList(), linkPreviews = DataMessageProcessor.getLinkPreviews(message.preview, message.body ?: "", false), mentions = DataMessageProcessor.getMentions(message.bodyRanges), @@ -188,6 +189,7 @@ object EditMessageProcessor { receivedTimeMillis = targetMessage.dateReceived, body = message.body, groupId = groupId, + parentStoryId = targetMessage.parentStoryId, expiresIn = targetMessage.expiresIn, isUnidentified = metadata.sealedSender, serverGuid = envelope.serverGuid