aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs/conversations/parser/MessageParser.java
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-10-02 21:07:11 +0200
committeriNPUTmice <daniel@gultsch.de>2014-10-02 21:07:11 +0200
commitf671938e842ece605f600860107ec9d2b8bfd019 (patch)
treeda3d64802587a683130b2b8878a6851cb72266a6 /src/eu/siacs/conversations/parser/MessageParser.java
parentcc76e15b95af16a2030b02b9a5035126d3ba18da (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.java23
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;
}