From f96d61dd4dbf6e198ee83290fa950fcfda1d2481 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 2 Nov 2021 01:06:43 +0300 Subject: [PATCH] Use InvokeAfter for ToggleDialogIsBlocked queries. --- td/telegram/MessagesManager.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 59055a4ec..59ecf4fb5 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -1740,26 +1740,25 @@ class ToggleDialogUnreadMarkQuery final : public Td::ResultHandler { } }; -class ToggleDialogIsBlockedQuery final : public Td::ResultHandler { +class ToggleDialogIsBlockedActor final : public NetActorOnce { Promise promise_; DialogId dialog_id_; bool is_blocked_; public: - explicit ToggleDialogIsBlockedQuery(Promise &&promise) : promise_(std::move(promise)) { + explicit ToggleDialogIsBlockedActor(Promise &&promise) : promise_(std::move(promise)) { } - void send(DialogId dialog_id, bool is_blocked) { + void send(DialogId dialog_id, bool is_blocked, uint64 sequence_dispatcher_id) { dialog_id_ = dialog_id; is_blocked_ = is_blocked; auto input_peer = td->messages_manager_->get_input_peer(dialog_id, AccessRights::Know); CHECK(input_peer != nullptr && input_peer->get_id() != telegram_api::inputPeerEmpty::ID); - if (is_blocked) { - send_query(G()->net_query_creator().create(telegram_api::contacts_block(std::move(input_peer)))); - } else { - send_query(G()->net_query_creator().create(telegram_api::contacts_unblock(std::move(input_peer)))); - } + auto query = is_blocked ? G()->net_query_creator().create(telegram_api::contacts_block(std::move(input_peer))) + : G()->net_query_creator().create(telegram_api::contacts_unblock(std::move(input_peer))); + send_closure(td->messages_manager_->sequence_dispatcher_, &MultiSequenceDispatcher::send_with_callback, + std::move(query), actor_shared(this), sequence_dispatcher_id); } void on_result(uint64 id, BufferSlice packet) final { @@ -1777,13 +1776,13 @@ class ToggleDialogIsBlockedQuery final : public Td::ResultHandler { } void on_error(uint64 id, Status status) final { - if (!td->messages_manager_->on_get_dialog_error(dialog_id_, status, "ToggleDialogIsBlockedQuery")) { - LOG(ERROR) << "Receive error for ToggleDialogIsBlockedQuery: " << status; + if (!td->messages_manager_->on_get_dialog_error(dialog_id_, status, "ToggleDialogIsBlockedActor")) { + LOG(ERROR) << "Receive error for ToggleDialogIsBlockedActor: " << status; } if (!G()->close_flag()) { td->messages_manager_->on_update_dialog_is_blocked(dialog_id_, !is_blocked_); - td->messages_manager_->get_dialog_info_full(dialog_id_, Auto(), "ToggleDialogIsBlockedQuery"); - td->messages_manager_->reget_dialog_action_bar(dialog_id_, "ToggleDialogIsBlockedQuery"); + td->messages_manager_->get_dialog_info_full(dialog_id_, Auto(), "ToggleDialogIsBlockedActor"); + td->messages_manager_->reget_dialog_action_bar(dialog_id_, "ToggleDialogIsBlockedActor"); } promise_.set_error(std::move(status)); } @@ -19188,8 +19187,9 @@ void MessagesManager::toggle_dialog_is_blocked_on_server(DialogId dialog_id, boo log_event_id = save_toggle_dialog_is_blocked_on_server_log_event(dialog_id, is_blocked); } - td_->create_handler(get_erase_log_event_promise(log_event_id)) - ->send(dialog_id, is_blocked); + send_closure(td_->create_net_actor(get_erase_log_event_promise(log_event_id)), + &ToggleDialogIsBlockedActor::send, dialog_id, is_blocked, + get_sequence_dispatcher_id(dialog_id, MessageContentType::Text)); } Status MessagesManager::toggle_dialog_silent_send_message(DialogId dialog_id, bool silent_send_message) {