From 12af41174a6f08ce400a325a97753d1d36b78b89 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 10 Jul 2026 05:47:04 +0000 Subject: [PATCH] Cap mention processing in story reply and edit message paths. --- .../securesms/messages/DataMessageProcessor.kt | 7 ++++--- .../securesms/messages/EditMessageProcessor.kt | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt index dd171f2171..98d71b9123 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -122,7 +122,7 @@ import kotlin.time.Duration.Companion.seconds object DataMessageProcessor { - private const val BODY_RANGE_PROCESSING_LIMIT = 250 + internal const val BODY_RANGE_PROCESSING_LIMIT = 250 private const val POLL_QUESTION_CHARACTER_LIMIT = 200 private const val POLL_CHARACTER_LIMIT = 100 private const val POLL_OPTIONS_LIMIT = 10 @@ -791,7 +791,8 @@ object DataMessageProcessor { return null } - val bodyRanges: BodyRangeList? = message.bodyRanges.filter { Util.allAreNull(it.mentionAci, it.mentionAciBinary) }.toList().toBodyRangeList() + val cappedBodyRanges: List = message.bodyRanges.take(BODY_RANGE_PROCESSING_LIMIT) + val bodyRanges: BodyRangeList? = cappedBodyRanges.filter { Util.allAreNull(it.mentionAci, it.mentionAciBinary) }.toList().toBodyRangeList() val mediaMessage = IncomingMessage( type = MessageType.NORMAL, @@ -805,7 +806,7 @@ object DataMessageProcessor { body = message.body, groupId = groupId, quote = quoteModel, - mentions = getMentions(message.bodyRanges), + mentions = getMentions(cappedBodyRanges), serverGuid = UuidUtil.getStringUUID(envelope.serverGuid, envelope.serverGuidBinary), messageRanges = bodyRanges ) 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 5d798a429c..8c64e33239 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt @@ -124,7 +124,8 @@ object EditMessageProcessor { message: DataMessage, targetMessage: MmsMessageRecord ): InsertResult? { - val messageRanges: BodyRangeList? = message.bodyRanges.filter { Util.allAreNull(it.mentionAci, it.mentionAciBinary) }.toList().toBodyRangeList() + val cappedBodyRanges = message.bodyRanges.take(DataMessageProcessor.BODY_RANGE_PROCESSING_LIMIT) + val messageRanges: BodyRangeList? = cappedBodyRanges.filter { Util.allAreNull(it.mentionAci, it.mentionAciBinary) }.toList().toBodyRangeList() val targetQuote = targetMessage.quote val quote: QuoteModel? = if (targetQuote != null && (message.quote != null || (targetMessage.parentStoryId != null && message.storyContext != null))) { QuoteModel( @@ -159,7 +160,7 @@ object EditMessageProcessor { parentStoryId = targetMessage.parentStoryId, sharedContacts = emptyList(), linkPreviews = DataMessageProcessor.getLinkPreviews(message.preview, message.body ?: "", false), - mentions = DataMessageProcessor.getMentions(message.bodyRanges), + mentions = DataMessageProcessor.getMentions(cappedBodyRanges), serverGuid = UuidUtil.getStringUUID(envelope.serverGuid, envelope.serverGuidBinary), messageRanges = messageRanges )