Add and use DialogFilter::is_dialog_included.
This commit is contained in:
parent
314dca6757
commit
dc18ce7b0e
|
@ -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<FolderId> 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)) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<DialogFilter>(*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");
|
||||
|
|
Loading…
Reference in New Issue
Block a user