2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-09-02 07:25:46 +00:00

Correctly handle cloud archive unread state.

This commit is contained in:
John Preston
2019-04-25 14:01:09 +04:00
parent accb20a571
commit cb3e649e61
2 changed files with 18 additions and 12 deletions

View File

@@ -337,22 +337,31 @@ void Folder::applyDialog(const MTPDdialogFolder &data) {
void Folder::updateCloudUnread(const MTPDdialogFolder &data) {
const auto notifier = unreadStateChangeNotifier(!_chatsList.loaded());
_cloudUnread.messagesMuted = data.vunread_muted_messages_count.v;
_cloudUnread.messages = _cloudUnread.messagesMuted
_cloudUnread.messages = data.vunread_muted_messages_count.v
+ data.vunread_unmuted_messages_count.v;
_cloudUnread.chatsMuted = data.vunread_muted_peers_count.v;
_cloudUnread.chats = _cloudUnread.chatsMuted
+ data.vunread_unmuted_peers_count.v;
_cloudUnread.chats = data.vunread_muted_peers_count.v
+ data.vunread_unmuted_peers_count.v;
finalizeCloudUnread();
_cloudUnread.known = true;
}
void Folder::finalizeCloudUnread() {
// Cloud state for archive folder always counts everything as muted.
_cloudUnread.messagesMuted = _cloudUnread.messages;
_cloudUnread.chatsMuted = _cloudUnread.chats;
// We don't know the real value of marked chats counts in _cloudUnread.
_cloudUnread.marksMuted = _cloudUnread.marks = 0;
}
Dialogs::UnreadState Folder::chatListUnreadState() const {
const auto localUnread = _chatsList.unreadState();
auto result = _chatsList.loaded() ? localUnread : _cloudUnread;
result.messagesMuted = result.messages;
result.chatsMuted = result.chats;
// We don't know the real value of marked chats counts.
// We don't know the real value of marked chats counts in _cloudUnread.
result.marksMuted = result.marks = localUnread.marks;
return result;
@@ -386,9 +395,7 @@ void Folder::unreadStateChanged(
if (updateCloudUnread) {
Assert(nowState.known);
_cloudUnread += nowState - wasState;
// We don't know the real value of marked chats counts.
_cloudUnread.marks = _cloudUnread.marksMuted = 0;
finalizeCloudUnread();
}
}
@@ -417,9 +424,7 @@ void Folder::unreadEntryChanged(
} else {
_cloudUnread -= state;
}
// We don't know the real value of marked chats counts.
_cloudUnread.marks = _cloudUnread.marksMuted = 0;
finalizeCloudUnread();
}
}