From d43b6eaf56d505ed36639a77bf00e8fd1d897c8a Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Wed, 10 May 2023 20:46:09 -0500 Subject: [PATCH] Actually clear reply fallback for directReply which doesn't have one --- .../eu/siacs/conversations/entities/Message.java | 15 +++++++++------ .../services/XmppConnectionService.java | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index e5bc3ac6bc8dd634c1210d7fec891a84c4aa124d..9d122a247be19ffe01329ffa63348a57348e8e63 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -503,7 +503,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable public String getBody() { StringBuilder body = new StringBuilder(this.body); - List fallbacks = getFallbacks(); + List fallbacks = getFallbacks("http://jabber.org/protocol/address", Namespace.OOB); List> spans = new ArrayList<>(); for (Element fallback : fallbacks) { for (Element span : fallback.getChildren()) { @@ -529,8 +529,8 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } } - public synchronized void clearFallbacks() { - this.payloads.removeAll(getFallbacks()); + public synchronized void clearFallbacks(String... includeFor) { + this.payloads.removeAll(getFallbacks(includeFor)); } public synchronized void setBody(String body) { @@ -1104,7 +1104,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable return new ArrayList<>(this.payloads); } - public List getFallbacks() { + public List getFallbacks(String... includeFor) { List fallbacks = new ArrayList<>(); if (this.payloads == null) return fallbacks; @@ -1113,8 +1113,11 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable if (el.getName().equals("fallback") && el.getNamespace().equals("urn:xmpp:fallback:0")) { final String fallbackFor = el.getAttribute("for"); if (fallbackFor == null) continue; - if (fallbackFor.equals("http://jabber.org/protocol/address") || fallbackFor.equals(Namespace.OOB)) { - fallbacks.add(el); + for (String includeOne : includeFor) { + if (fallbackFor.equals(includeOne)) { + fallbacks.add(el); + break; + } } } } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 160c0853aecba74c0ad85d41b966a0e8a3a9a0d4..890a61fdb2f6bb34aa7889b9a1ea6b8c254ee2be 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1070,7 +1070,7 @@ public class XmppConnectionService extends Service { } else { message = inReplyTo.reply(); } - message.clearFallbacks(); + message.clearFallbacks("urn:xmpp:reply:0"); message.setBody(body); message.setEncryption(conversation.getNextEncryption()); }