diff options
author | iNPUTmice <daniel@gultsch.de> | 2014-10-02 21:07:11 +0200 |
---|---|---|
committer | iNPUTmice <daniel@gultsch.de> | 2014-10-02 21:07:11 +0200 |
commit | f671938e842ece605f600860107ec9d2b8bfd019 (patch) | |
tree | da3d64802587a683130b2b8878a6851cb72266a6 /src/eu/siacs/conversations/parser/MessageParser.java | |
parent | cc76e15b95af16a2030b02b9a5035126d3ba18da (diff) |
mark conversation as read when displayed marker from another client is received
Diffstat (limited to '')
-rw-r--r-- | src/eu/siacs/conversations/parser/MessageParser.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/eu/siacs/conversations/parser/MessageParser.java b/src/eu/siacs/conversations/parser/MessageParser.java index c8718edb..e09dd0c5 100644 --- a/src/eu/siacs/conversations/parser/MessageParser.java +++ b/src/eu/siacs/conversations/parser/MessageParser.java @@ -1,6 +1,7 @@ package eu.siacs.conversations.parser; import android.os.SystemClock; +import android.util.Log; import net.java.otr4j.session.Session; import net.java.otr4j.session.SessionStatus; import eu.siacs.conversations.Config; @@ -202,10 +203,24 @@ public class MessageParser extends AbstractParser implements return null; } Element message = forwarded.findChild("message"); - if ((message == null) || (!message.hasChild("body"))) { + if (message == null) { + return null; + } + if (!message.hasChild("body")) { if (status == Message.STATUS_RECEIVED && message.getAttribute("from") != null) { parseNonMessage(message, account); + } else if (status == Message.STATUS_SEND + && message.hasChild("displayed", "urn:xmpp:chat-markers:0")) { + String to = message.getAttribute("to"); + if (to != null) { + Conversation conversation = mXmppConnectionService.find( + mXmppConnectionService.getConversations(), account, + to.split("/")[0]); + if (conversation != null) { + mXmppConnectionService.markRead(conversation, false); + } + } } return null; } @@ -419,7 +434,8 @@ public class MessageParser extends AbstractParser implements lastCarbonMessageReceived = SystemClock .elapsedRealtime(); notify = false; - mXmppConnectionService.markRead(message.getConversation()); + mXmppConnectionService.markRead( + message.getConversation(), false); } else { message.markUnread(); } @@ -436,7 +452,8 @@ public class MessageParser extends AbstractParser implements || NotificationService .wasHighlightedOrPrivate(message); } else { - mXmppConnectionService.markRead(message.getConversation()); + mXmppConnectionService.markRead(message.getConversation(), + false); lastCarbonMessageReceived = SystemClock.elapsedRealtime(); notify = false; } |