aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/de/pixart/messenger/parser/MessageParser.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/main/java/de/pixart/messenger/parser/MessageParser.java b/src/main/java/de/pixart/messenger/parser/MessageParser.java
index d2b59077e..bbc9d05bb 100644
--- a/src/main/java/de/pixart/messenger/parser/MessageParser.java
+++ b/src/main/java/de/pixart/messenger/parser/MessageParser.java
@@ -409,12 +409,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);
@@ -428,6 +435,15 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
if (serverMsgId == null) {
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;