From c41c0235a1198dc0e03c05221a6eeb84b0db76bd Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 16 Dec 2025 15:49:46 -0500 Subject: [PATCH] Use less quote for reaction fallback --- .../conversations/services/XmppConnectionService.java | 2 +- .../eu/siacs/conversations/ui/util/QuoteHelper.java | 6 +++++- .../eu/siacs/conversations/utils/MessageUtils.java | 10 +++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 58b70b174d15179e86c60098dcd95fb1d7097b0d..b60268a8ff547b970044d1dfe5c4a7013d7bbdb7 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -4667,7 +4667,7 @@ public class XmppConnectionService extends Service { final var packet = mMessageGenerator.reaction(reactTo, typeGroupChat, message, reactToId, reactions); - final var quote = QuoteHelper.quote(MessageUtils.prepareQuote(message)) + "\n"; + final var quote = QuoteHelper.quote(MessageUtils.prepareQuote(message, 1, 2)) + "\n\n"; final var body = quote + String.join(" ", newReactions); if (conversation.getNextEncryption() == Message.ENCRYPTION_AXOLOTL && newReactions.size() > 0) { FILE_ATTACHMENT_EXECUTOR.execute(() -> { diff --git a/src/main/java/eu/siacs/conversations/ui/util/QuoteHelper.java b/src/main/java/eu/siacs/conversations/ui/util/QuoteHelper.java index d835f862a1804f796638c5e64d443b70fbc7c0e3..61536a183a253c27db0bfab7fb97a0d66b668e92 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/QuoteHelper.java +++ b/src/main/java/eu/siacs/conversations/ui/util/QuoteHelper.java @@ -98,6 +98,10 @@ public class QuoteHelper { } public static boolean isNestedTooDeeply(CharSequence line) { + return isNestedTooDeeply(line, Config.QUOTING_MAX_DEPTH); + } + + public static boolean isNestedTooDeeply(CharSequence line, int maxDepth) { if (isPositionQuoteStart(line, 0)) { int nestingDepth = 1; for (int i = 1; i < line.length(); i++) { @@ -107,7 +111,7 @@ public class QuoteHelper { break; } } - return nestingDepth >= (Config.QUOTING_MAX_DEPTH); + return nestingDepth >= maxDepth; } return false; } diff --git a/src/main/java/eu/siacs/conversations/utils/MessageUtils.java b/src/main/java/eu/siacs/conversations/utils/MessageUtils.java index ab0c49142fa704c42b5743acefde9e6f425f0574..4b13d951411049252c3ba34affd6d759f5bbde74 100644 --- a/src/main/java/eu/siacs/conversations/utils/MessageUtils.java +++ b/src/main/java/eu/siacs/conversations/utils/MessageUtils.java @@ -30,6 +30,7 @@ package eu.siacs.conversations.utils; import com.google.common.base.Strings; +import eu.siacs.conversations.Config; import eu.siacs.conversations.entities.Conversational; import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.http.AesGcmURL; @@ -46,6 +47,10 @@ public class MessageUtils { public static final String EMPTY_STRING = ""; public static String prepareQuote(final Message message) { + return prepareQuote(message, Config.QUOTING_MAX_DEPTH, -1); + } + + public static String prepareQuote(final Message message, int maxDepth, int maxLines) { final StringBuilder builder = new StringBuilder(); final String body; if (message.hasMeCommand()) { @@ -63,14 +68,17 @@ public class MessageUtils { } else { body = message.getQuoteableBody(); } + int lines = 0; for (String line : body.split("\n")) { - if (!(line.length() <= 0) && QuoteHelper.isNestedTooDeeply(line)) { + if (!(line.length() <= 0) && QuoteHelper.isNestedTooDeeply(line, maxDepth)) { continue; } + if (maxLines > 0 && maxLines <= lines) break; if (builder.length() != 0) { builder.append('\n'); } builder.append(line.trim()); + lines++; } return builder.toString(); }