diff --git a/td/telegram/MessagesInfo.cpp b/td/telegram/MessagesInfo.cpp index 5b07bebcf..0dc3a5dfe 100644 --- a/td/telegram/MessagesInfo.cpp +++ b/td/telegram/MessagesInfo.cpp @@ -42,6 +42,8 @@ MessagesInfo get_messages_info(Td *td, DialogId dialog_id, chats = std::move(messages->chats_); result.total_count = messages->count_; result.messages = std::move(messages->messages_); + result.next_rate = messages->next_rate_; + // inexact:flags.1?true offset_id_offset:flags.2?int break; } case telegram_api::messages_channelMessages::ID: { @@ -53,6 +55,7 @@ MessagesInfo get_messages_info(Td *td, DialogId dialog_id, result.total_count = messages->count_; result.messages = std::move(messages->messages_); result.is_channel_messages = true; + // inexact:flags.1?true pts:int offset_id_offset:flags.2?int break; } case telegram_api::messages_messagesNotModified::ID: diff --git a/td/telegram/MessagesInfo.h b/td/telegram/MessagesInfo.h index a3200f66b..92d86bf50 100644 --- a/td/telegram/MessagesInfo.h +++ b/td/telegram/MessagesInfo.h @@ -18,6 +18,7 @@ class Td; struct MessagesInfo { vector> messages; int32 total_count = 0; + int32 next_rate = -1; bool is_channel_messages = false; }; diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 31923485f..5d03957c2 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -2758,7 +2758,7 @@ class SearchMessagesGlobalQuery final : public Td::ResultHandler { auto info = result.move_as_ok(); send_closure(actor_id, &MessagesManager::on_get_messages_search_result, query, offset_date, offset_dialog_id, offset_message_id, limit, filter, min_date, max_date, random_id, - info.total_count, std::move(info.messages), std::move(promise)); + info.total_count, std::move(info.messages), info.next_rate, std::move(promise)); } })); } @@ -10493,7 +10493,7 @@ void MessagesManager::on_get_messages_search_result(const string &query, int32 o MessageSearchFilter filter, int32 min_date, int32 max_date, int64 random_id, int32 total_count, vector> &&messages, - Promise &&promise) { + int32 next_rate, Promise &&promise) { TRY_STATUS_PROMISE(promise, G()->close_status()); LOG(INFO) << "Receive " << messages.size() << " found messages"; @@ -10531,6 +10531,9 @@ void MessagesManager::on_get_messages_search_result(const string &query, int32 o } it->second.total_count = total_count; if (!result.empty()) { + if (next_rate > 0) { + last_message_date = next_rate; + } it->second.next_offset = PSTRING() << last_message_date << ',' << last_dialog_id.get() << ',' << last_message_id.get_server_message_id().get(); } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 8d39975d6..b3a9648ff 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -217,7 +217,8 @@ class MessagesManager final : public Actor { void on_get_messages_search_result(const string &query, int32 offset_date, DialogId offset_dialog_id, MessageId offset_message_id, int32 limit, MessageSearchFilter filter, int32 min_date, int32 max_date, int64 random_id, int32 total_count, - vector> &&messages, Promise &&promise); + vector> &&messages, int32 next_rate, + Promise &&promise); void on_failed_messages_search(int64 random_id); void on_get_outgoing_document_messages(vector> &&messages,