show self messages from other devices as received

Daniel Gultsch created

Change summary

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

Detailed changes

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

@@ -410,12 +410,19 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
 		}
 		boolean isProperlyAddressed = (to != null) && (!to.isBareJid() || account.countPresences() == 0);
 		boolean isMucStatusMessage = from.isBareJid() && mucUserElement != null && mucUserElement.hasChild("status");
+		boolean selfAddressed;
 		if (packet.fromAccount(account)) {
 			status = Message.STATUS_SEND;
-			counterpart = to != null ? to : account.getJid();
+			selfAddressed = to == null || account.getJid().toBareJid().equals(to.toBareJid());
+			if (selfAddressed) {
+				counterpart = from;
+			} else {
+				counterpart = to != null ? to : account.getJid();
+			}
 		} else {
 			status = Message.STATUS_RECEIVED;
 			counterpart = from;
+			selfAddressed = false;
 		}
 
 		Invite invite = extractInvite(account, packet);
@@ -431,6 +438,17 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
 				serverMsgId = extractStanzaId(packet, isTypeGroupChat, conversation);
 			}
 
+
+			if (selfAddressed) {
+				if (mXmppConnectionService.markMessage(conversation, remoteMsgId, Message.STATUS_SEND_RECEIVED, serverMsgId)) {
+					return;
+				}
+				status = Message.STATUS_RECEIVED;
+				if (conversation.findMessageWithRemoteId(remoteMsgId,counterpart) != null) {
+					return;
+				}
+			}
+
 			if (isTypeGroupChat) {
 				if (conversation.getMucOptions().isSelf(counterpart)) {
 					status = Message.STATUS_SEND_RECEIVED;