Fix assertion violation in marking history as read.

This commit is contained in:
John Preston 2019-05-01 16:43:16 +04:00
parent d9ad3a4bbe
commit 4e8c57a861
2 changed files with 11 additions and 2 deletions

View File

@ -6001,6 +6001,11 @@ void ApiWrap::sendReadRequest(not_null<PeerData*> peer, MsgId upTo) {
_readRequests.remove(peer);
if (const auto next = _readRequestsPending.take(peer)) {
sendReadRequest(peer, *next);
} else if (const auto history
= _session->data().historyLoaded(peer)) {
if (!history->unreadCountKnown()) {
requestDialogEntry(history);
}
}
};
if (const auto channel = peer->asChannel()) {

View File

@ -1553,7 +1553,9 @@ void History::readClientSideMessages() {
MsgId History::readInbox() {
const auto upTo = msgIdForRead();
setUnreadCount(0);
if (unreadCountKnown()) {
setUnreadCount(0);
}
readClientSideMessages();
if (upTo) {
inboxRead(upTo);
@ -3022,7 +3024,9 @@ void History::clear(ClearType type) {
} else {
_notifications.clear();
owner().notifyHistoryCleared(this);
setUnreadCount(0);
if (unreadCountKnown()) {
setUnreadCount(0);
}
if (type == ClearType::DeleteChat) {
setLastMessage(nullptr);
} else if (_lastMessage && *_lastMessage) {