From 5fef27af1be000687f18644a1564d714f42d0e34 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 27 Feb 2020 21:31:19 +0300 Subject: [PATCH] Add parameter force to get_dialog_scheduled_messages. GitOrigin-RevId: 1876be0d4de852aa3508810c491e3bb073ae0384 --- td/telegram/MessagesManager.cpp | 11 ++++++----- td/telegram/MessagesManager.h | 2 +- td/telegram/Td.cpp | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index bb0101ee..0f713c1d 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -17432,7 +17432,8 @@ void MessagesManager::load_messages(DialogId dialog_id, MessageId from_message_i get_history(dialog_id, from_message_id, offset, limit, from_database, only_local, std::move(promise)); } -vector MessagesManager::get_dialog_scheduled_messages(DialogId dialog_id, Promise &&promise) { +vector MessagesManager::get_dialog_scheduled_messages(DialogId dialog_id, bool force, + Promise &&promise) { LOG(INFO) << "Get scheduled messages in " << dialog_id; if (G()->close_flag()) { promise.set_error(Status::Error(500, "Request aborted")); @@ -17492,8 +17493,8 @@ vector MessagesManager::get_dialog_scheduled_messages(DialogId dialog } auto hash = get_vector_hash(numbers); - if (d->has_scheduled_server_messages || - (d->scheduled_messages_sync_generation == 0 && !G()->parameters().use_message_db)) { + if (!force && (d->has_scheduled_server_messages || + (d->scheduled_messages_sync_generation == 0 && !G()->parameters().use_message_db))) { load_dialog_scheduled_messages(dialog_id, false, hash, std::move(promise)); return {}; } @@ -23679,9 +23680,9 @@ void MessagesManager::repair_dialog_scheduled_messages(DialogId dialog_id) { // TODO create logevent LOG(INFO) << "Repair scheduled messages in " << dialog_id; - get_dialog_scheduled_messages(dialog_id, PromiseCreator::lambda([actor_id = actor_id(this), dialog_id](Unit) { + get_dialog_scheduled_messages(dialog_id, false, PromiseCreator::lambda([actor_id = actor_id(this), dialog_id](Unit) { send_closure(G()->messages_manager(), &MessagesManager::get_dialog_scheduled_messages, - dialog_id, Promise()); + dialog_id, true, Promise()); })); } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 85398261..51b88733 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -646,7 +646,7 @@ class MessagesManager : public Actor { int32 get_dialog_message_count(DialogId dialog_id, const tl_object_ptr &filter, bool return_local, int64 &random_id, Promise &&promise); - vector get_dialog_scheduled_messages(DialogId dialog_id, Promise &&promise); + vector get_dialog_scheduled_messages(DialogId dialog_id, bool force, Promise &&promise); tl_object_ptr get_dialog_message_by_date_object(int64 random_id); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index ef9253d5..b2ba7b13 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -1616,7 +1616,8 @@ class GetChatScheduledMessagesRequest : public RequestActor<> { vector message_ids_; void do_run(Promise &&promise) override { - message_ids_ = td->messages_manager_->get_dialog_scheduled_messages(dialog_id_, std::move(promise)); + message_ids_ = + td->messages_manager_->get_dialog_scheduled_messages(dialog_id_, get_tries() < 2, std::move(promise)); } void do_send_result() override { @@ -1626,7 +1627,7 @@ class GetChatScheduledMessagesRequest : public RequestActor<> { public: GetChatScheduledMessagesRequest(ActorShared td, uint64 request_id, int64 dialog_id) : RequestActor(std::move(td), request_id), dialog_id_(dialog_id) { - set_tries(3); + set_tries(4); } };