From 47b225c11f8dd232f8b22471b2d1170a034dd111 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 5 May 2023 16:31:33 +0300 Subject: [PATCH] Move limit increase to OrderedMessages::get_history. --- td/telegram/MessagesManager.cpp | 12 ------------ td/telegram/OrderedMessage.cpp | 10 ++++++++++ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 8ac89245c..0bb2bee61 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -21003,12 +21003,6 @@ tl_object_ptr MessagesManager::get_dialog_history(DialogId dia << " tries left, have_full_history = " << d->have_full_history << ", have_full_history_source = " << d->have_full_history_source; - bool is_limit_increased = false; - if (limit == -offset) { - limit++; - is_limit_increased = true; - } - auto message_ids = d->ordered_messages.get_history(d->last_message_id, from_message_id, offset, limit, left_tries == 0); if (!message_ids.empty()) { @@ -21024,12 +21018,6 @@ tl_object_ptr MessagesManager::get_dialog_history(DialogId dia return nullptr; } - LOG(INFO) << "Have " << message_ids.size() << " messages out of requested " - << (is_limit_increased ? "increased " : "exact ") << limit; - if (is_limit_increased && static_cast(limit) == message_ids.size()) { - message_ids.pop_back(); - } - LOG(INFO) << "Return " << message_ids << " in result to getChatHistory"; promise.set_value(Unit()); // can return some messages return get_messages_object(-1, dialog_id, message_ids, true, diff --git a/td/telegram/OrderedMessage.cpp b/td/telegram/OrderedMessage.cpp index e04d5d740..12a359852 100644 --- a/td/telegram/OrderedMessage.cpp +++ b/td/telegram/OrderedMessage.cpp @@ -336,6 +336,12 @@ void OrderedMessages::traverse_messages(const std::function &ne vector OrderedMessages::get_history(MessageId last_message_id, MessageId &from_message_id, int32 &offset, int32 &limit, bool force) const { + CHECK(limit > 0); + bool is_limit_increased = false; + if (limit == -offset) { + limit++; + is_limit_increased = true; + } CHECK(-limit < offset && offset <= 0); auto it = get_const_iterator(from_message_id); @@ -422,6 +428,10 @@ vector OrderedMessages::get_history(MessageId last_message_id, Messag if (from_the_end) { from_message_id = MessageId(); } + + if (is_limit_increased && static_cast(limit) == message_ids.size()) { + message_ids.pop_back(); + } return message_ids; }