Change summary
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 2
src/main/java/eu/siacs/conversations/ui/util/QuoteHelper.java | 6
src/main/java/eu/siacs/conversations/utils/MessageUtils.java | 10
3 files changed, 15 insertions(+), 3 deletions(-)
Detailed changes
@@ -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(() -> {
@@ -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;
}
@@ -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();
}