Simplify MessagesManager::set_dialog_order.
GitOrigin-RevId: a91e590024087f71146637064b5a44a4a2da9960
This commit is contained in:
parent
fd10b27847
commit
443924ca11
@ -28267,23 +28267,9 @@ bool MessagesManager::set_dialog_order(Dialog *d, int64 new_order, bool need_sen
|
|||||||
DialogDate new_date(new_order, dialog_id);
|
DialogDate new_date(new_order, dialog_id);
|
||||||
|
|
||||||
auto &list = get_dialog_list(d->folder_id);
|
auto &list = get_dialog_list(d->folder_id);
|
||||||
std::set<DialogDate> *ordered_dialogs_set = nullptr;
|
|
||||||
switch (dialog_id.get_type()) {
|
|
||||||
case DialogType::User:
|
|
||||||
case DialogType::Chat:
|
|
||||||
case DialogType::Channel:
|
|
||||||
case DialogType::SecretChat:
|
|
||||||
ordered_dialogs_set = &list.ordered_server_dialogs_;
|
|
||||||
break;
|
|
||||||
case DialogType::None:
|
|
||||||
default:
|
|
||||||
UNREACHABLE();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (old_date == new_date) {
|
if (old_date == new_date) {
|
||||||
if (new_order == DEFAULT_ORDER && ordered_dialogs_set->count(old_date) == 0) {
|
if (new_order == DEFAULT_ORDER) {
|
||||||
ordered_dialogs_set->insert(new_date);
|
list.ordered_server_dialogs_.insert(new_date);
|
||||||
}
|
}
|
||||||
LOG(INFO) << "Dialog order is not changed: " << new_order << " from " << source;
|
LOG(INFO) << "Dialog order is not changed: " << new_order << " from " << source;
|
||||||
return false;
|
return false;
|
||||||
@ -28297,7 +28283,7 @@ bool MessagesManager::set_dialog_order(Dialog *d, int64 new_order, bool need_sen
|
|||||||
}
|
}
|
||||||
need_update = true;
|
need_update = true;
|
||||||
}
|
}
|
||||||
if (ordered_dialogs_set->erase(old_date) == 0) {
|
if (list.ordered_server_dialogs_.erase(old_date) == 0) {
|
||||||
LOG_IF(ERROR, d->order != DEFAULT_ORDER) << dialog_id << " not found in the chat list from " << source;
|
LOG_IF(ERROR, d->order != DEFAULT_ORDER) << dialog_id << " not found in the chat list from " << source;
|
||||||
}
|
}
|
||||||
LOG_IF(ERROR, is_loaded_from_database && d->order != DEFAULT_ORDER)
|
LOG_IF(ERROR, is_loaded_from_database && d->order != DEFAULT_ORDER)
|
||||||
@ -28309,7 +28295,7 @@ bool MessagesManager::set_dialog_order(Dialog *d, int64 new_order, bool need_sen
|
|||||||
need_update = true;
|
need_update = true;
|
||||||
updated_to = new_order;
|
updated_to = new_order;
|
||||||
}
|
}
|
||||||
ordered_dialogs_set->insert(new_date);
|
list.ordered_server_dialogs_.insert(new_date);
|
||||||
|
|
||||||
bool add_to_hints = (d->order == DEFAULT_ORDER);
|
bool add_to_hints = (d->order == DEFAULT_ORDER);
|
||||||
bool was_sponsored = (d->order == SPONSORED_DIALOG_ORDER);
|
bool was_sponsored = (d->order == SPONSORED_DIALOG_ORDER);
|
||||||
@ -28424,7 +28410,7 @@ bool MessagesManager::set_dialog_order(Dialog *d, int64 new_order, bool need_sen
|
|||||||
void MessagesManager::update_last_dialog_date(FolderId folder_id) {
|
void MessagesManager::update_last_dialog_date(FolderId folder_id) {
|
||||||
auto &list = get_dialog_list(folder_id);
|
auto &list = get_dialog_list(folder_id);
|
||||||
auto old_last_dialog_date = list.last_dialog_date_;
|
auto old_last_dialog_date = list.last_dialog_date_;
|
||||||
list.last_dialog_date_ = list.last_server_dialog_date_; // std::min
|
list.last_dialog_date_ = list.last_server_dialog_date_;
|
||||||
CHECK(old_last_dialog_date <= list.last_dialog_date_);
|
CHECK(old_last_dialog_date <= list.last_dialog_date_);
|
||||||
|
|
||||||
LOG(INFO) << "Update last dialog date in " << folder_id << " from " << old_last_dialog_date << " to "
|
LOG(INFO) << "Update last dialog date in " << folder_id << " from " << old_last_dialog_date << " to "
|
||||||
|
@ -1226,12 +1226,11 @@ class MessagesManager : public Actor {
|
|||||||
int32 server_dialog_total_count_ = -1;
|
int32 server_dialog_total_count_ = -1;
|
||||||
int32 secret_chat_total_count_ = -1;
|
int32 secret_chat_total_count_ = -1;
|
||||||
|
|
||||||
std::set<DialogDate> ordered_dialogs_; // all dialogs with date <= last_dialog_date_
|
// date of the last dialog in loaded the dialog list prefix
|
||||||
std::set<DialogDate> ordered_server_dialogs_; // all known dialogs, including with default order
|
|
||||||
|
|
||||||
// date of last dialog in the dialog list
|
|
||||||
// last_dialog_date_ == min(last_server_dialog_date_, last_secret_chat_dialog_date_)
|
|
||||||
DialogDate last_dialog_date_ = MIN_DIALOG_DATE; // in memory
|
DialogDate last_dialog_date_ = MIN_DIALOG_DATE; // in memory
|
||||||
|
std::set<DialogDate> ordered_dialogs_; // all dialogs with date <= last_dialog_date_
|
||||||
|
|
||||||
|
std::set<DialogDate> ordered_server_dialogs_; // all known dialogs, including with default order
|
||||||
|
|
||||||
// date of last known user/group/channel dialog in the right order
|
// date of last known user/group/channel dialog in the right order
|
||||||
DialogDate last_server_dialog_date_ = MIN_DIALOG_DATE;
|
DialogDate last_server_dialog_date_ = MIN_DIALOG_DATE;
|
||||||
|
Reference in New Issue
Block a user