don’t send origin-ids to rooms that support stable-ids. fixes #3905

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/MucOptions.java        | 4 
src/main/java/eu/siacs/conversations/generator/MessageGenerator.java | 6 
2 files changed, 8 insertions(+), 2 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/MucOptions.java 🔗

@@ -211,6 +211,10 @@ public class MucOptions {
         return conversation.getBooleanAttribute(Conversation.ATTRIBUTE_MODERATED, false);
     }
 
+    public boolean stableId() {
+        return getFeatures().contains("http://jabber.org/protocol/muc#stable_id");
+    }
+
     public User deleteUser(Jid jid) {
         User user = findUserByFullJid(jid);
         if (user != null) {

src/main/java/eu/siacs/conversations/generator/MessageGenerator.java 🔗

@@ -18,12 +18,12 @@ import eu.siacs.conversations.http.P1S3UrlStreamHandler;
 import eu.siacs.conversations.services.XmppConnectionService;
 import eu.siacs.conversations.xml.Element;
 import eu.siacs.conversations.xml.Namespace;
+import eu.siacs.conversations.xmpp.Jid;
 import eu.siacs.conversations.xmpp.chatstate.ChatState;
 import eu.siacs.conversations.xmpp.jingle.JingleConnectionManager;
 import eu.siacs.conversations.xmpp.jingle.JingleRtpConnection;
 import eu.siacs.conversations.xmpp.jingle.Media;
 import eu.siacs.conversations.xmpp.stanzas.MessagePacket;
-import eu.siacs.conversations.xmpp.Jid;
 
 public class MessageGenerator extends AbstractGenerator {
     private static final String OMEMO_FALLBACK_MESSAGE = "I sent you an OMEMO encrypted message but your client doesn’t seem to support that. Find more information on https://conversations.im/omemo";
@@ -58,7 +58,9 @@ public class MessageGenerator extends AbstractGenerator {
         }
         packet.setFrom(account.getJid());
         packet.setId(message.getUuid());
-        packet.addChild("origin-id", Namespace.STANZA_IDS).setAttribute("id", message.getUuid());
+        if (conversation.getMode() == Conversational.MODE_SINGLE || message.isPrivateMessage() || !conversation.getMucOptions().stableId()) {
+            packet.addChild("origin-id", Namespace.STANZA_IDS).setAttribute("id", message.getUuid());
+        }
         if (message.edited()) {
             packet.addChild("replace", "urn:xmpp:message-correct:0").setAttribute("id", message.getEditedIdWireFormat());
         }