diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index cb235e9417873588d1353328cfcf8d1927994e2f..4322d0ae9b00aaf76ad698c556d65b78159f74b7 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -563,6 +563,12 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } } + public synchronized void setHtml(Element html) { + final Element oldHtml = getHtml(true); + if (oldHtml != null) this.payloads.remove(oldHtml); + if (html != null) addPayload(html); + } + public synchronized void setBody(String body) { this.body = body; this.isGeoUri = null; diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 5ecf8342627b7553ccffc8a0b4bbe4dea7566ff9..eaceeb9fe265d1a9cd295d9bd34b31d0fce1622b 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -587,7 +587,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece if (conversation.getMucOptions().isSelf(counterpart)) { status = Message.STATUS_SEND_RECEIVED; isCarbon = true; //not really carbon but received from another resource - if (mXmppConnectionService.markMessage(conversation, remoteMsgId, status, serverMsgId, body)) { + if (mXmppConnectionService.markMessage(conversation, remoteMsgId, status, serverMsgId, body, html)) { return; } else if (remoteMsgId == null || Config.IGNORE_ID_REWRITE_IN_MUC) { if (body != null) { diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index ba80a7556262fd90ebd966799edc5198b0f93423..7d1e3c38bbe57a21a8d9ab2f05862e3f261cddad 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -4517,10 +4517,10 @@ public class XmppConnectionService extends Service { } public boolean markMessage(final Conversation conversation, final String uuid, final int status, final String serverMessageId) { - return markMessage(conversation, uuid, status, serverMessageId, null); + return markMessage(conversation, uuid, status, serverMessageId, null, null); } - public boolean markMessage(final Conversation conversation, final String uuid, final int status, final String serverMessageId, final LocalizedContent body) { + public boolean markMessage(final Conversation conversation, final String uuid, final int status, final String serverMessageId, final LocalizedContent body, final Element html) { if (uuid == null) { return false; } else { @@ -4533,6 +4533,7 @@ public class XmppConnectionService extends Service { && message.isTypeText() && isBodyModified(message, body)) { message.setBody(body.content); + message.setHtml(html); if (body.count > 1) { message.setBodyLanguage(body.language); }