Use next_rate in searchMessages.

This commit is contained in:
levlam 2022-12-25 22:43:37 +03:00
parent 3080f64273
commit fc2ab0a7ab
4 changed files with 11 additions and 3 deletions

View File

@ -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:

View File

@ -18,6 +18,7 @@ class Td;
struct MessagesInfo {
vector<telegram_api::object_ptr<telegram_api::Message>> messages;
int32 total_count = 0;
int32 next_rate = -1;
bool is_channel_messages = false;
};

View File

@ -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<tl_object_ptr<telegram_api::Message>> &&messages,
Promise<Unit> &&promise) {
int32 next_rate, Promise<Unit> &&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();
}

View File

@ -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<tl_object_ptr<telegram_api::Message>> &&messages, Promise<Unit> &&promise);
vector<tl_object_ptr<telegram_api::Message>> &&messages, int32 next_rate,
Promise<Unit> &&promise);
void on_failed_messages_search(int64 random_id);
void on_get_outgoing_document_messages(vector<tl_object_ptr<telegram_api::Message>> &&messages,