add origin-id to outgoing messages

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/generator/MessageGenerator.java | 2 
src/main/java/eu/siacs/conversations/parser/MessageParser.java       | 8 
2 files changed, 9 insertions(+), 1 deletion(-)

Detailed changes

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

@@ -18,6 +18,7 @@ import eu.siacs.conversations.entities.Conversation;
 import eu.siacs.conversations.entities.Message;
 import eu.siacs.conversations.services.XmppConnectionService;
 import eu.siacs.conversations.xml.Element;
+import eu.siacs.conversations.xml.Namespace;
 import eu.siacs.conversations.xmpp.chatstate.ChatState;
 import eu.siacs.conversations.xmpp.jid.Jid;
 import eu.siacs.conversations.xmpp.stanzas.MessagePacket;
@@ -54,6 +55,7 @@ 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 (message.edited()) {
 			packet.addChild("replace","urn:xmpp:message-correct:0").setAttribute("id",message.getEditedId());
 		}

src/main/java/eu/siacs/conversations/parser/MessageParser.java 🔗

@@ -366,7 +366,13 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
 		final Jid counterpart;
 		final Jid to = packet.getTo();
 		final Jid from = packet.getFrom();
-		final String remoteMsgId = packet.getId();
+		final Element originId = packet.findChild("origin-id",Namespace.STANZA_IDS);
+		final String remoteMsgId;
+		if (originId != null && originId.getAttribute("id") != null) {
+			remoteMsgId = originId.getAttribute("id");
+		} else {
+			remoteMsgId = packet.getId();
+		}
 		boolean notify = false;
 
 		if (from == null) {