From 2bf612c02027bc9dc1aff3ce75ca7cfb03034cea Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 19 Jun 2023 18:45:56 +0300 Subject: [PATCH] Add MessageViewers::get_sublist. --- td/telegram/MessageViewer.cpp | 24 ++++++++++++++++++++++++ td/telegram/MessageViewer.h | 8 ++++++++ 2 files changed, 32 insertions(+) diff --git a/td/telegram/MessageViewer.cpp b/td/telegram/MessageViewer.cpp index 883c6f0d4..74ff5f29d 100644 --- a/td/telegram/MessageViewer.cpp +++ b/td/telegram/MessageViewer.cpp @@ -22,6 +22,14 @@ td_api::object_ptr MessageViewer::get_message_viewer_obje contacts_manager->get_user_id_object(user_id_, "get_message_viewer_object"), date_); } +bool operator==(const MessageViewer &lhs, const MessageViewer &rhs) { + return lhs.user_id_ == rhs.user_id_ && lhs.date_ == rhs.date_; +} + +bool operator!=(const MessageViewer &lhs, const MessageViewer &rhs) { + return !(lhs == rhs); +} + StringBuilder &operator<<(StringBuilder &string_builder, const MessageViewer &viewer) { return string_builder << '[' << viewer.user_id_ << " at " << viewer.date_ << ']'; } @@ -44,6 +52,22 @@ MessageViewers::MessageViewers(vector>()}; + bool found = offset == MessageViewer(UserId(), 0); + for (auto &message_viewer : message_viewers_) { + if (found) { + if (limit-- <= 0) { + break; + } + result.message_viewers_.push_back(message_viewer); + } else if (message_viewer == offset) { + found = true; + } + } + return result; +} + td_api::object_ptr MessageViewers::get_message_viewers_object( ContactsManager *contacts_manager) const { return td_api::make_object( diff --git a/td/telegram/MessageViewer.h b/td/telegram/MessageViewer.h index 4eb2bce0f..06a39c57f 100644 --- a/td/telegram/MessageViewer.h +++ b/td/telegram/MessageViewer.h @@ -23,6 +23,8 @@ class MessageViewer { friend StringBuilder &operator<<(StringBuilder &string_builder, const MessageViewer &viewer); + friend bool operator==(const MessageViewer &lhs, const MessageViewer &rhs); + public: explicit MessageViewer(telegram_api::object_ptr &&read_date); @@ -36,6 +38,10 @@ class MessageViewer { td_api::object_ptr get_message_viewer_object(ContactsManager *contacts_manager) const; }; +bool operator==(const MessageViewer &lhs, const MessageViewer &rhs); + +bool operator!=(const MessageViewer &lhs, const MessageViewer &rhs); + StringBuilder &operator<<(StringBuilder &string_builder, const MessageViewer &viewer); struct MessageViewers { @@ -45,6 +51,8 @@ struct MessageViewers { explicit MessageViewers(vector> &&read_dates); + MessageViewers get_sublist(const MessageViewer &offset, int32 limit) const; + td_api::object_ptr get_message_viewers_object(ContactsManager *contacts_manager) const; };