From 0540ae7b60e7daaf0e9ff397cb2164f3b43ed5aa Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 8 Sep 2020 14:58:02 +0300 Subject: [PATCH] Add min_date/max_date to searchMessages. GitOrigin-RevId: a340969e431dd2de018461f3904da6569a91b166 --- td/generate/scheme/td_api.tl | 4 +++- td/generate/scheme/td_api.tlo | Bin 180972 -> 181044 bytes td/telegram/MessagesManager.cpp | 22 ++++++++++++++-------- td/telegram/MessagesManager.h | 6 +++--- td/telegram/Td.cpp | 14 +++++++++----- td/telegram/cli.cpp | 4 ++-- 6 files changed, 31 insertions(+), 19 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index f49662885..b5b695ced 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -3622,7 +3622,9 @@ searchChatMessages chat_id:int53 query:string sender_user_id:int32 from_message_ //@offset_message_id The message identifier of the last found message, or 0 for the first request //@limit The maximum number of messages to be returned; up to 100. Fewer messages may be returned than specified by the limit, even if the end of the message history has not been reached //@filter Filter for message content in the search results; searchMessagesFilterCall, searchMessagesFilterMissedCall, searchMessagesFilterMention, searchMessagesFilterUnreadMention and searchMessagesFilterFailedToSend are unsupported in this function -searchMessages chat_list:ChatList query:string offset_date:int32 offset_chat_id:int53 offset_message_id:int53 limit:int32 filter:SearchMessagesFilter = Messages; +//@min_date If not 0, the minimum date of the messages to return +//@max_date If not 0, the maximum date of the messages to return +searchMessages chat_list:ChatList query:string offset_date:int32 offset_chat_id:int53 offset_message_id:int53 limit:int32 filter:SearchMessagesFilter min_date:int32 max_date:int32 = Messages; //@description Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance the number of returned messages is chosen by the library //@chat_id Identifier of the chat in which to search. Specify 0 to search in all secret chats diff --git a/td/generate/scheme/td_api.tlo b/td/generate/scheme/td_api.tlo index 74b6d8b404ea87fc87746e641d8a0c59e47cf525..815ea4c71a77d5bc1674d866b2035d7390213be1 100644 GIT binary patch delta 94 zcmV-k0HOcvg$uNX3xI?Hv;v@u9g=~Q@(y!lVRB<=O=WX)VP|D?01-k2|JlY8ObM4k z+W{+=oaO-_mk5jkvMPaaV`NL1qf|ncwduYoFkVIDgh9;)QkccHuqm6 AFaQ7m delta 74 zcmV-Q0JZnet_query_creator().create(telegram_api::messages_searchGlobal( - flags, folder_id.get(), query, get_input_messages_filter(filter), 0, 0, offset_date_, std::move(input_peer), - offset_message_id.get_server_message_id().get(), limit))); + flags, folder_id.get(), query, get_input_messages_filter(filter), min_date_, max_date_, offset_date_, + std::move(input_peer), offset_message_id.get_server_message_id().get(), limit))); } void on_result(uint64 id, BufferSlice packet) override { @@ -1698,8 +1702,8 @@ class SearchMessagesGlobalQuery : public Td::ResultHandler { auto info = td->messages_manager_->on_get_messages(result_ptr.move_as_ok(), "SearchMessagesGlobalQuery"); td->messages_manager_->on_get_messages_search_result(query_, offset_date_, offset_dialog_id_, offset_message_id_, - limit_, filter_, random_id_, info.total_count, - std::move(info.messages)); + limit_, filter_, min_date_, max_date_, random_id_, + info.total_count, std::move(info.messages)); promise_.set_value(Unit()); } @@ -8794,7 +8798,8 @@ void MessagesManager::on_failed_dialog_messages_search(DialogId dialog_id, int64 void MessagesManager::on_get_messages_search_result(const string &query, int32 offset_date, DialogId offset_dialog_id, MessageId offset_message_id, int32 limit, - MessageSearchFilter filter, int64 random_id, int32 total_count, + MessageSearchFilter filter, int32 min_date, int32 max_date, + int64 random_id, int32 total_count, vector> &&messages) { LOG(INFO) << "Receive " << messages.size() << " found messages"; auto it = found_messages_.find(random_id); @@ -19300,7 +19305,8 @@ void MessagesManager::on_messages_db_calls_result(Result std::pair> MessagesManager::search_messages( FolderId folder_id, bool ignore_folder_id, const string &query, int32 offset_date, DialogId offset_dialog_id, - MessageId offset_message_id, int32 limit, MessageSearchFilter filter, int64 &random_id, Promise &&promise) { + MessageId offset_message_id, int32 limit, MessageSearchFilter filter, int32 min_date, int32 max_date, + int64 &random_id, Promise &&promise) { if (random_id != 0) { // request has already been sent before auto it = found_messages_.find(random_id); @@ -19357,7 +19363,7 @@ std::pair> MessagesManager::search_messages( td_->create_handler(std::move(promise)) ->send(folder_id, ignore_folder_id, query, offset_date, offset_dialog_id, offset_message_id, limit, filter, - random_id); + min_date, max_date, random_id); return {}; } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 6a01c181d..041a6e20b 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -240,7 +240,7 @@ class MessagesManager : 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, - int64 random_id, int32 total_count, + int32 min_date, int32 max_date, int64 random_id, int32 total_count, vector> &&messages); void on_failed_messages_search(int64 random_id); @@ -678,8 +678,8 @@ class MessagesManager : public Actor { std::pair> search_messages(FolderId folder_id, bool ignore_folder_id, const string &query, int32 offset_date, DialogId offset_dialog_id, MessageId offset_message_id, - int32 limit, MessageSearchFilter filter, int64 &random_id, - Promise &&promise); + int32 limit, MessageSearchFilter filter, int32 min_date, + int32 max_date, int64 &random_id, Promise &&promise); std::pair> search_call_messages(MessageId from_message_id, int32 limit, bool only_missed, int64 &random_id, bool use_db, Promise &&promise); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 94b74dc64..a8a59d7d2 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -1481,14 +1481,16 @@ class SearchMessagesRequest : public RequestActor<> { MessageId offset_message_id_; int32 limit_; MessageSearchFilter filter_; + int32 min_date_; + int32 max_date_; int64 random_id_; std::pair> messages_; void do_run(Promise &&promise) override { - messages_ = - td->messages_manager_->search_messages(folder_id_, ignore_folder_id_, query_, offset_date_, offset_dialog_id_, - offset_message_id_, limit_, filter_, random_id_, std::move(promise)); + messages_ = td->messages_manager_->search_messages(folder_id_, ignore_folder_id_, query_, offset_date_, + offset_dialog_id_, offset_message_id_, limit_, filter_, + min_date_, max_date_, random_id_, std::move(promise)); } void do_send_result() override { @@ -1507,7 +1509,7 @@ class SearchMessagesRequest : public RequestActor<> { public: SearchMessagesRequest(ActorShared td, uint64 request_id, FolderId folder_id, bool ignore_folder_id, string query, int32 offset_date, int64 offset_dialog_id, int64 offset_message_id, int32 limit, - tl_object_ptr &&filter) + tl_object_ptr &&filter, int32 min_date, int32 max_date) : RequestActor(std::move(td), request_id) , folder_id_(folder_id) , ignore_folder_id_(ignore_folder_id) @@ -1517,6 +1519,8 @@ class SearchMessagesRequest : public RequestActor<> { , offset_message_id_(offset_message_id) , limit_(limit) , filter_(get_message_search_filter(filter)) + , min_date_(min_date) + , max_date_(max_date) , random_id_(0) { } }; @@ -5482,7 +5486,7 @@ void Td::on_request(uint64 id, td_api::searchMessages &request) { } CREATE_REQUEST(SearchMessagesRequest, dialog_list_id.get_folder_id(), request.chat_list_ == nullptr, std::move(request.query_), request.offset_date_, request.offset_chat_id_, request.offset_message_id_, - request.limit_, std::move(request.filter_)); + request.limit_, std::move(request.filter_), request.min_date_, request.max_date_); } void Td::on_request(uint64 id, td_api::searchCallMessages &request) { diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 81f6bcc98..94d67d5a4 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -1885,8 +1885,8 @@ class CliClient final : public Actor { chat_list = td_api::make_object(); } send_request(td_api::make_object( - std::move(chat_list), query, to_integer(from_date), 2147482647, 0, to_integer(limit), - as_search_messages_filter(filter))); + std::move(chat_list), query, to_integer(from_date), 2147483647, 0, to_integer(limit), + as_search_messages_filter(filter), 1, 2147483647)); } else if (op == "SCM") { string chat_id; string limit;