From 0f93d0fd5646882e7a2d54bf1f01b75150df0d90 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 28 May 2020 02:07:00 +0300 Subject: [PATCH] Add update_dialog_filter_on_server function. GitOrigin-RevId: 35d57215c3cbae2f48a6398541a71583ffb9f33a --- td/telegram/MessagesManager.cpp | 47 ++++++++------------------------- td/telegram/MessagesManager.h | 2 ++ 2 files changed, 13 insertions(+), 36 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index e1b72be76..fc5f00779 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -15417,17 +15417,7 @@ void MessagesManager::create_dialog_filter(td_api::object_ptrremove_secret_chat_dialog_ids(); - auto input_dialog_filter = dialog_filter->get_input_dialog_filter(); - - // TODO SequenceDispatcher - auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), dialog_filter = std::move(dialog_filter), - promise = std::move(promise)](Result result) mutable { - send_closure(actor_id, &MessagesManager::on_update_dialog_filter, std::move(dialog_filter), - result.is_error() ? result.move_as_error() : Status::OK(), std::move(promise)); - }); - td_->create_handler(std::move(query_promise)) - ->send(dialog_filter_id, std::move(input_dialog_filter)); + update_dialog_filter_on_server(std::move(dialog_filter), std::move(promise)); } void MessagesManager::edit_dialog_filter(DialogFilterId dialog_filter_id, td_api::object_ptr filter, @@ -15453,11 +15443,16 @@ void MessagesManager::edit_dialog_filter(DialogFilterId dialog_filter_id, td_api save_dialog_filters(); send_update_chat_filters(); - new_dialog_filter->remove_secret_chat_dialog_ids(); - auto input_dialog_filter = new_dialog_filter->get_input_dialog_filter(); + update_dialog_filter_on_server(std::move(new_dialog_filter), std::move(promise)); +} + +void MessagesManager::update_dialog_filter_on_server(unique_ptr &&dialog_filter, + Promise &&promise) { + dialog_filter->remove_secret_chat_dialog_ids(); + auto input_dialog_filter = dialog_filter->get_input_dialog_filter(); // TODO SequenceDispatcher - auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), dialog_filter = std::move(new_dialog_filter), + auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), dialog_filter = std::move(dialog_filter), promise = std::move(promise)](Result result) mutable { send_closure(actor_id, &MessagesManager::on_update_dialog_filter, std::move(dialog_filter), result.is_error() ? result.move_as_error() : Status::OK(), std::move(promise)); @@ -16120,17 +16115,7 @@ Status MessagesManager::toggle_dialog_is_pinned(DialogListId dialog_list_id, Dia send_update_chat_filters(); if (dialog_id.get_type() != DialogType::SecretChat) { - new_dialog_filter->remove_secret_chat_dialog_ids(); - auto input_dialog_filter = new_dialog_filter->get_input_dialog_filter(); - - // TODO SequenceDispatcher - auto query_promise = PromiseCreator::lambda( - [actor_id = actor_id(this), dialog_filter = std::move(new_dialog_filter)](Result result) mutable { - send_closure(actor_id, &MessagesManager::on_update_dialog_filter, std::move(dialog_filter), - result.is_error() ? result.move_as_error() : Status::OK(), Promise()); - }); - td_->create_handler(std::move(query_promise)) - ->send(dialog_filter_id, std::move(input_dialog_filter)); + update_dialog_filter_on_server(std::move(new_dialog_filter), Promise()); } return Status::OK(); @@ -16277,17 +16262,7 @@ Status MessagesManager::set_pinned_dialogs(DialogListId dialog_list_id, vectorremove_secret_chat_dialog_ids(); - auto input_dialog_filter = new_dialog_filter->get_input_dialog_filter(); - - // TODO SequenceDispatcher - auto query_promise = PromiseCreator::lambda( - [actor_id = actor_id(this), dialog_filter = std::move(new_dialog_filter)](Result result) mutable { - send_closure(actor_id, &MessagesManager::on_update_dialog_filter, std::move(dialog_filter), - result.is_error() ? result.move_as_error() : Status::OK(), Promise()); - }); - td_->create_handler(std::move(query_promise)) - ->send(dialog_filter_id, std::move(input_dialog_filter)); + update_dialog_filter_on_server(std::move(new_dialog_filter), Promise()); } return Status::OK(); diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 466da6b44..1cca2e1f1 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2256,6 +2256,8 @@ class MessagesManager : public Actor { Result> create_dialog_filter(DialogFilterId dialog_filter_id, td_api::object_ptr filter); + void update_dialog_filter_on_server(unique_ptr &&dialog_filter, Promise &&promise); + void on_update_dialog_filter(unique_ptr dialog_filter, Status result, Promise &&promise); void on_delete_dialog_filter(DialogFilterId dialog_filter_id, Status result, Promise &&promise);