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 5924807bb7..c80b8f63be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -110,6 +110,8 @@ import kotlin.time.Duration.Companion.seconds object DataMessageProcessor { + private const val BODY_RANGE_PROCESSING_LIMIT = 250 + fun process( context: Context, senderRecipient: Recipient, @@ -834,10 +836,10 @@ object DataMessageProcessor { val quote: QuoteModel? = getValidatedQuote(context, envelope.timestamp, message) val contacts: List = getContacts(message) val linkPreviews: List = getLinkPreviews(message.previewList, message.body ?: "", false) - val mentions: List = getMentions(message.bodyRangesList) + val mentions: List = getMentions(message.bodyRangesList.take(BODY_RANGE_PROCESSING_LIMIT)) val sticker: Attachment? = getStickerAttachment(envelope.timestamp, message) val attachments: List = message.attachmentsList.toPointersWithinLimit() - val messageRanges: BodyRangeList? = if (message.bodyRangesCount > 0) message.bodyRangesList.filter { it.hasStyle() }.toList().toBodyRangeList() else null + val messageRanges: BodyRangeList? = if (message.bodyRangesCount > 0) message.bodyRangesList.asSequence().take(BODY_RANGE_PROCESSING_LIMIT).filter { it.hasStyle() }.toList().toBodyRangeList() else null handlePossibleExpirationUpdate(envelope, metadata, senderRecipient.id, threadRecipient, groupId, message.expireTimer.seconds, receivedTime) diff --git a/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageRangesTransformer.kt b/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageRangesTransformer.kt index 3fd3175d7c..4558d35f13 100644 --- a/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageRangesTransformer.kt +++ b/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageRangesTransformer.kt @@ -16,6 +16,7 @@ object MessageRangesTransformer : ColumnTransformer { return if (messageRangesData != null) { val ranges = BodyRangeList.parseFrom(messageRangesData) ranges.rangesList + .take(5) .map { range -> val mention = range.hasMentionUuid() val style = range.hasStyle() @@ -34,6 +35,13 @@ object MessageRangesTransformer : ColumnTransformer { rangeString }.joinToString("
") + .let { + if (ranges.rangesCount > 5) { + it + "
" + "Not showing an additional ${ranges.rangesCount - 5} body ranges." + } else { + it + } + } } else { null }