Flush groups in reverse order to not exceed max_notification_group_count_.
GitOrigin-RevId: 8f1b03b389f7ef5b2b233591e6465ee13dc4fe5d
This commit is contained in:
parent
a84f096ae9
commit
173ba39ad0
@ -714,13 +714,14 @@ void NotificationManager::edit_notification(NotificationGroupId group_id, Notifi
|
|||||||
notification.type = std::move(type);
|
notification.type = std::move(type);
|
||||||
if (i + max_notification_group_size_ >= group.notifications.size()) {
|
if (i + max_notification_group_size_ >= group.notifications.size()) {
|
||||||
add_update_notification(group_it->first.group_id, group_it->first.dialog_id, notification);
|
add_update_notification(group_it->first.group_id, group_it->first.dialog_id, notification);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto ¬ification : group.pending_notifications) {
|
for (auto ¬ification : group.pending_notifications) {
|
||||||
if (notification.notification_id == notification_id) {
|
if (notification.notification_id == notification_id) {
|
||||||
notification.type = std::move(type);
|
notification.type = std::move(type);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1104,15 +1105,20 @@ void NotificationManager::after_get_difference_impl() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
VLOG(notifications) << "After get difference";
|
VLOG(notifications) << "After get difference";
|
||||||
vector<int32> ready_group_ids;
|
vector<NotificationGroupKey> ready_group_keys;
|
||||||
for (auto &it : pending_updates_) {
|
for (auto &it : pending_updates_) {
|
||||||
if (running_get_chat_difference_.count(it.first) == 0) {
|
if (running_get_chat_difference_.count(it.first) == 0) {
|
||||||
ready_group_ids.push_back(it.first);
|
auto group_it = get_group(NotificationGroupId(it.first));
|
||||||
|
CHECK(group_it != groups_.end());
|
||||||
|
ready_group_keys.push_back(group_it->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto group_id : ready_group_ids) {
|
|
||||||
flush_pending_updates_timeout_.cancel_timeout(group_id);
|
// flush groups in reverse order to not exceed max_notification_group_count_
|
||||||
flush_pending_updates(group_id, "after_get_difference");
|
std::sort(ready_group_keys.begin(), ready_group_keys.end());
|
||||||
|
for (auto group_key : reversed(ready_group_keys)) {
|
||||||
|
flush_pending_updates_timeout_.cancel_timeout(group_key.group_id.get());
|
||||||
|
flush_pending_updates(group_key.group_id.get(), "after_get_difference");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user