save changed server id in replaced messages

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/parser/MessageParser.java | 5 +++
1 file changed, 4 insertions(+), 1 deletion(-)

Detailed changes

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

@@ -531,7 +531,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
 			}
 
 			if (replacementId != null && mXmppConnectionService.allowMessageCorrection()) {
-				Message replacedMessage = conversation.findMessageWithRemoteIdAndCounterpart(replacementId,
+				final Message replacedMessage = conversation.findMessageWithRemoteIdAndCounterpart(replacementId,
 						counterpart,
 						message.getStatus() == Message.STATUS_RECEIVED,
 						message.isCarbon());
@@ -549,6 +549,9 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
 							replacedMessage.setBody(message.getBody());
 							replacedMessage.setEdited(replacedMessage.getRemoteMsgId());
 							replacedMessage.setRemoteMsgId(remoteMsgId);
+							if (replacedMessage.getServerMsgId() == null || message.getServerMsgId() != null) {
+								replacedMessage.setServerMsgId(message.getServerMsgId());
+							}
 							replacedMessage.setEncryption(message.getEncryption());
 							if (replacedMessage.getStatus() == Message.STATUS_RECEIVED) {
 								replacedMessage.markUnread();