diff --git a/td/telegram/DialogFilter.cpp b/td/telegram/DialogFilter.cpp index 36547dd91..13c9bdf9d 100644 --- a/td/telegram/DialogFilter.cpp +++ b/td/telegram/DialogFilter.cpp @@ -172,10 +172,13 @@ bool DialogFilter::is_empty(bool for_server) const { } } +bool DialogFilter::is_dialog_included(DialogId dialog_id) const { + return InputDialogId::contains(included_dialog_ids, dialog_id) || + InputDialogId::contains(pinned_dialog_ids, dialog_id); +} + bool DialogFilter::can_include_dialog(DialogId dialog_id) const { - if (InputDialogId::contains(included_dialog_ids, dialog_id) || - InputDialogId::contains(pinned_dialog_ids, dialog_id)) { - // the dialog is already included + if (is_dialog_included(dialog_id)) { return false; } @@ -579,10 +582,7 @@ vector DialogFilter::get_folder_ids() const { bool DialogFilter::need_dialog(const Td *td, DialogId dialog_id, bool has_unread_mentions, bool is_muted, bool has_unread_messages, FolderId folder_id) const { - if (InputDialogId::contains(pinned_dialog_ids, dialog_id)) { - return true; - } - if (InputDialogId::contains(included_dialog_ids, dialog_id)) { + if (is_dialog_included(dialog_id)) { return true; } if (InputDialogId::contains(excluded_dialog_ids, dialog_id)) { @@ -592,10 +592,7 @@ bool DialogFilter::need_dialog(const Td *td, DialogId dialog_id, bool has_unread auto user_id = td->contacts_manager_->get_secret_chat_user_id(dialog_id.get_secret_chat_id()); if (user_id.is_valid()) { auto user_dialog_id = DialogId(user_id); - if (InputDialogId::contains(pinned_dialog_ids, user_dialog_id)) { - return true; - } - if (InputDialogId::contains(included_dialog_ids, user_dialog_id)) { + if (is_dialog_included(user_dialog_id)) { return true; } if (InputDialogId::contains(excluded_dialog_ids, user_dialog_id)) { diff --git a/td/telegram/DialogFilter.h b/td/telegram/DialogFilter.h index ee452bc82..3de57014a 100644 --- a/td/telegram/DialogFilter.h +++ b/td/telegram/DialogFilter.h @@ -70,6 +70,8 @@ class DialogFilter { return dialog_filter_id; } + bool is_dialog_included(DialogId dialog_id) const; + bool can_include_dialog(DialogId dialog_id) const; Status check_limits() const; diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index cb2ae7f2b..c2352e7c7 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -34489,17 +34489,13 @@ void MessagesManager::add_dialog_to_list(DialogId dialog_id, DialogListId dialog auto dialog_filter_id = dialog_list_id.get_filter_id(); auto old_dialog_filter = get_dialog_filter(dialog_filter_id); CHECK(old_dialog_filter != nullptr); - if (InputDialogId::contains(old_dialog_filter->included_dialog_ids, dialog_id) || - InputDialogId::contains(old_dialog_filter->pinned_dialog_ids, dialog_id)) { + if (old_dialog_filter->is_dialog_included(dialog_id)) { return promise.set_value(Unit()); } auto new_dialog_filter = make_unique(*old_dialog_filter); new_dialog_filter->include_dialog(get_input_dialog_id(dialog_id)); - auto status = new_dialog_filter->check_limits(); - if (status.is_error()) { - return promise.set_error(std::move(status)); - } + TRY_STATUS_PROMISE(promise, new_dialog_filter->check_limits()); new_dialog_filter->sort_input_dialog_ids(td_, "add_dialog_to_list"); edit_dialog_filter(std::move(new_dialog_filter), "add_dialog_to_list");