mark all sent messages up to a marker as displayed
This commit is contained in:
parent
d318af098d
commit
ff86fa6049
|
@ -402,14 +402,19 @@ public class MessageParser extends AbstractParser implements
|
|||
Element event = packet.findChild("event",
|
||||
"http://jabber.org/protocol/pubsub#event");
|
||||
parseEvent(event, from, account);
|
||||
} else if (from != null
|
||||
&& packet.hasChild("displayed", "urn:xmpp:chat-markers:0")) {
|
||||
} else if (from != null && packet.hasChild("displayed", "urn:xmpp:chat-markers:0")) {
|
||||
String id = packet
|
||||
.findChild("displayed", "urn:xmpp:chat-markers:0")
|
||||
.getAttribute("id");
|
||||
updateLastseen(packet, account, true);
|
||||
mXmppConnectionService.markMessage(account, from.toBareJid(),
|
||||
id, Message.STATUS_SEND_DISPLAYED);
|
||||
final Message displayedMessage = mXmppConnectionService.markMessage(account, from.toBareJid(), id, Message.STATUS_SEND_DISPLAYED);
|
||||
Message message = displayedMessage.prev();
|
||||
while(message != null
|
||||
&& message.getStatus() == Message.STATUS_SEND_RECEIVED
|
||||
&& message.getTimeSent() < displayedMessage.getTimeSent()) {
|
||||
mXmppConnectionService.markMessage(message,Message.STATUS_SEND_DISPLAYED);
|
||||
message = message.prev();
|
||||
}
|
||||
} else if (from != null
|
||||
&& packet.hasChild("received", "urn:xmpp:chat-markers:0")) {
|
||||
String id = packet.findChild("received", "urn:xmpp:chat-markers:0")
|
||||
|
|
|
@ -2013,19 +2013,20 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
|
|||
}
|
||||
}
|
||||
|
||||
public boolean markMessage(final Account account, final Jid recipient, final String uuid,
|
||||
final int status) {
|
||||
public Message markMessage(final Account account, final Jid recipient, final String uuid, final int status) {
|
||||
if (uuid == null) {
|
||||
return false;
|
||||
} else {
|
||||
for (Conversation conversation : getConversations()) {
|
||||
if (conversation.getJid().equals(recipient)
|
||||
&& conversation.getAccount().equals(account)) {
|
||||
return markMessage(conversation, uuid, status);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
for (Conversation conversation : getConversations()) {
|
||||
if (conversation.getJid().equals(recipient) && conversation.getAccount() == account) {
|
||||
final Message message = conversation.findSentMessageWithUuid(uuid);
|
||||
if (message != null) {
|
||||
markMessage(message, status);
|
||||
}
|
||||
return message;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean markMessage(Conversation conversation, String uuid,
|
||||
|
|
Loading…
Reference in a new issue