MessageParser: dismiss notification when receiving read marker from another client
This commit is contained in:
parent
05b6fdb9f1
commit
702d6cf2a5
|
@ -712,15 +712,20 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
||||||
if (conversation != null && id != null) {
|
if (conversation != null && id != null) {
|
||||||
Message message = conversation.findMessageWithRemoteId(id);
|
Message message = conversation.findMessageWithRemoteId(id);
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
|
if (conversation.getMucOptions().isSelf(counterpart)) {
|
||||||
|
if (!message.isRead() && (query == null || query.isCatchup())) { //checking if message is unread fixes race conditions with reflections
|
||||||
|
mXmppConnectionService.markRead(conversation);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
final Jid fallback = conversation.getMucOptions().getTrueCounterpart(counterpart);
|
final Jid fallback = conversation.getMucOptions().getTrueCounterpart(counterpart);
|
||||||
Jid trueJid = getTrueCounterpart(query != null ? mucUserElement : null, fallback);
|
Jid trueJid = getTrueCounterpart(query != null ? mucUserElement : null, fallback);
|
||||||
ReadByMarker readByMarker = ReadByMarker.from(counterpart, trueJid);
|
ReadByMarker readByMarker = ReadByMarker.from(counterpart, trueJid);
|
||||||
if (!conversation.getMucOptions().isSelf(counterpart) && message.addReadByMarker(readByMarker)) {
|
if (message.addReadByMarker(readByMarker)) {
|
||||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": added read by (" + readByMarker.getRealJid() + ") to message '" + message.getBody() + "'");
|
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": added read by (" + readByMarker.getRealJid() + ") to message '" + message.getBody() + "'");
|
||||||
mXmppConnectionService.updateMessage(message);
|
mXmppConnectionService.updateMessage(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
final Message displayedMessage = mXmppConnectionService.markMessage(account, from.toBareJid(), id, Message.STATUS_SEND_DISPLAYED);
|
final Message displayedMessage = mXmppConnectionService.markMessage(account, from.toBareJid(), id, Message.STATUS_SEND_DISPLAYED);
|
||||||
|
|
Loading…
Reference in a new issue