Add MessagesManager::get_dialog_filter_ids.

GitOrigin-RevId: fb70aca2c233efe1ec873a707e3418e9ac39a401
This commit is contained in:
levlam 2020-05-28 21:29:38 +03:00
parent 8ac003dc9d
commit cef4c3af2f
2 changed files with 10 additions and 5 deletions

View File

@ -14385,8 +14385,7 @@ void MessagesManager::on_get_dialog_filters(Result<vector<tl_object_ptr<telegram
}
}
bool is_order_changed = [&] {
vector<DialogFilterId> new_server_dialog_filter_ids =
transform(new_server_dialog_filters, [](auto &filter) { return filter->dialog_filter_id; });
vector<DialogFilterId> new_server_dialog_filter_ids = get_dialog_filter_ids(new_server_dialog_filters);
CHECK(new_server_dialog_filter_ids.size() >= left_old_server_dialog_filter_ids.size());
new_server_dialog_filter_ids.resize(left_old_server_dialog_filter_ids.size());
return new_server_dialog_filter_ids != left_old_server_dialog_filter_ids;
@ -14431,7 +14430,7 @@ bool MessagesManager::need_synchronize_dialog_filters() const {
// need delete dialog filter on server
return true;
}
if (dialog_filter_ids != transform(server_dialog_filters_, [](auto &filter) { return filter->dialog_filter_id; })) {
if (dialog_filter_ids != get_dialog_filter_ids(server_dialog_filters_)) {
// need reorder dialog filters on server
return true;
}
@ -14472,7 +14471,7 @@ void MessagesManager::synchronize_dialog_filters() {
dialog_filter_ids.push_back(dialog_filter->dialog_filter_id);
}
if (dialog_filter_ids != transform(server_dialog_filters_, [](auto &filter) { return filter->dialog_filter_id; })) {
if (dialog_filter_ids != get_dialog_filter_ids(server_dialog_filters_)) {
return reorder_dialog_filters_on_server(std::move(dialog_filter_ids));
}
@ -15727,7 +15726,7 @@ void MessagesManager::on_reorder_dialog_filters(vector<DialogFilterId> dialog_fi
bool MessagesManager::set_dialog_filters_order(vector<unique_ptr<DialogFilter>> &dialog_filters,
vector<DialogFilterId> dialog_filter_ids) {
auto old_dialog_filter_ids = transform(dialog_filters, [](auto &filter) { return filter->dialog_filter_id; });
auto old_dialog_filter_ids = get_dialog_filter_ids(dialog_filters);
if (old_dialog_filter_ids == dialog_filter_ids) {
return false;
}
@ -30919,6 +30918,10 @@ const MessagesManager::DialogFilter *MessagesManager::get_dialog_filter(DialogFi
return nullptr;
}
vector<DialogFilterId> MessagesManager::get_dialog_filter_ids(const vector<unique_ptr<DialogFilter>> &dialog_filters) {
return transform(dialog_filters, [](const auto &dialog_filter) { return dialog_filter->dialog_filter_id; });
}
vector<FolderId> MessagesManager::get_dialog_filter_folder_ids(const DialogFilter *filter) {
CHECK(filter != nullptr);
if (filter->exclude_archived) {

View File

@ -2292,6 +2292,8 @@ class MessagesManager : public Actor {
DialogFilter *get_dialog_filter(DialogFilterId dialog_filter_id);
const DialogFilter *get_dialog_filter(DialogFilterId dialog_filter_id) const;
static vector<DialogFilterId> get_dialog_filter_ids(const vector<unique_ptr<DialogFilter>> &dialog_filters);
static vector<FolderId> get_dialog_filter_folder_ids(const DialogFilter *filter);
vector<FolderId> get_dialog_list_folder_ids(const DialogList &list) const;