diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index df97a403e..9309dbfa6 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -14238,22 +14238,25 @@ void MessagesManager::schedule_dialog_filters_reload(double timeout) { timeout = 0.0; } LOG(INFO) << "Schedule reload of dialog filters in " << timeout; - reload_dialog_filters_timeout_.set_callback(std::move(MessagesManager::reload_dialog_filters)); - reload_dialog_filters_timeout_.set_callback_data(static_cast(td_)); + reload_dialog_filters_timeout_.set_callback(std::move(MessagesManager::on_reload_dialog_filters_timeout)); + reload_dialog_filters_timeout_.set_callback_data(static_cast(this)); reload_dialog_filters_timeout_.set_timeout_in(timeout); } -void MessagesManager::reload_dialog_filters(void *td) { +void MessagesManager::on_reload_dialog_filters_timeout(void *messages_manager_ptr) { if (G()->close_flag()) { return; } - auto td_ptr = static_cast(td); - auto messages_manager = td_ptr->messages_manager_.get(); - auto promise = PromiseCreator::lambda([actor_id = messages_manager->actor_id(messages_manager)]( - Result>> r_filters) { - send_closure(actor_id, &MessagesManager::on_get_dialog_filters, std::move(r_filters), false); - }); - td_ptr->create_handler(std::move(promise))->send(); + auto messages_manager = static_cast(messages_manager_ptr); + send_closure_later(messages_manager->actor_id(messages_manager), &MessagesManager::reload_dialog_filters); +} + +void MessagesManager::reload_dialog_filters() { + auto promise = PromiseCreator::lambda( + [actor_id = actor_id(this)](Result>> r_filters) { + send_closure(actor_id, &MessagesManager::on_get_dialog_filters, std::move(r_filters), false); + }); + td_->create_handler(std::move(promise))->send(); } void MessagesManager::on_get_dialog_filters(Result>> r_filters, diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index a6b58a48f..4eacc15bc 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2232,7 +2232,9 @@ class MessagesManager : public Actor { void schedule_dialog_filters_reload(double timeout); - static void reload_dialog_filters(void *td); + static void on_reload_dialog_filters_timeout(void *messages_manager_ptr); + + void reload_dialog_filters(); void on_get_dialog_filters(Result>> r_filters, bool dummy);