From 7a45faff24dd36f7e7dcfdddfcab36adf6ca760e Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 20 Jan 2021 17:30:26 +0300 Subject: [PATCH] Add offset_date support in getChatInviteLinks. --- td/generate/scheme/td_api.tl | 10 +++++++--- td/generate/scheme/td_api.tlo | Bin 194340 -> 194376 bytes td/telegram/ContactsManager.cpp | 16 +++++++++------- td/telegram/ContactsManager.h | 2 +- td/telegram/Td.cpp | 4 ++-- td/telegram/cli.cpp | 8 +++++--- 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 466cb779e..6862dc462 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -4387,10 +4387,14 @@ createChatInviteLink chat_id:int53 expire_date:int32 member_limit:int32 = ChatIn //@member_limit Maximum number of chat members that can join the chat by the link simultaneously; 0-100000; pass 0 if not limited editChatInviteLink chat_id:int53 invite_link:string expire_date:int32 member_limit:int32 = ChatInviteLink; -//@description Returns exported invite links for a chat. Requires administrator privileges and can_invite_users right in the chat @chat_id Chat identifier @administrator_user_id If not 0, only invite links created by the specified administrator will be returned +//@description Returns exported invite links for a chat. Requires administrator privileges and can_invite_users right in the chat +//@chat_id Chat identifier +//@administrator_user_id If not 0, only invite links created by the specified administrator will be returned //@is_revoked Pass true if revoked links needs to be returned instead of active or expired -//@offset_invite_link Invite link starting after which to return invite links; use empty string to get results from the beginning @limit Maximum number of invite links to return -getChatInviteLinks chat_id:int53 administrator_user_id:int32 is_revoked:Bool offset_invite_link:string limit:int32 = ChatInviteLinks; +//@offset_date Creation date of an invite link starting after which to return invite links; use 0 to get results from the beginning +//@offset_invite_link Invite link starting after which to return invite links; use empty string to get results from the beginning +//@limit Maximum number of invite links to return +getChatInviteLinks chat_id:int53 administrator_user_id:int32 is_revoked:Bool offset_date:int32 offset_invite_link:string limit:int32 = ChatInviteLinks; //@description Returns chat members joined a chat by an invite link. Requires administrator privileges and can_invite_users right in the chat @chat_id Chat identifier @invite_link Invite link for which to return chat members //@offset_member A chat member from which to return next chat members; use null to get results from the beginning @limit Maximum number of chat members to return diff --git a/td/generate/scheme/td_api.tlo b/td/generate/scheme/td_api.tlo index 25dce982dad80b63db6af35ac4d2d64b69858bbc..9f84e287927038e49494ee19d6d6a7f6cbbdaa43 100644 GIT binary patch delta 44 zcmV+{0Mq}Z?hDB73xI?Hv;xR#1hWf(@t4eM0vwmbSOO@Q5NiTdmt?yFB)4R10>F#5 CY7$-m delta 39 xcmV+?0NDS??hB;u3xI?Hv;xR#1V@&?o0rUL0vwklMgb_75NiTdw}@*3z>8ON5BmTB diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index fb8147661..f1b952324 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -1680,8 +1680,8 @@ class GetExportedChatInvitesQuery : public Td::ResultHandler { : promise_(std::move(promise)) { } - void send(DialogId dialog_id, UserId administrator_user_id, bool is_revoked, const string &offset_invite_link, - int32 limit) { + void send(DialogId dialog_id, UserId administrator_user_id, bool is_revoked, int32 offset_date, + const string &offset_invite_link, int32 limit) { dialog_id_ = dialog_id; auto input_peer = td->messages_manager_->get_input_peer(dialog_id, AccessRights::Read); if (input_peer == nullptr) { @@ -1694,14 +1694,16 @@ class GetExportedChatInvitesQuery : public Td::ResultHandler { if (input_user != nullptr) { flags |= telegram_api::messages_getExportedChatInvites::ADMIN_ID_MASK; } - if (!offset_invite_link.empty()) { + if (!offset_invite_link.empty() || offset_date != 0) { + flags |= telegram_api::messages_getExportedChatInvites::OFFSET_DATE_MASK; flags |= telegram_api::messages_getExportedChatInvites::OFFSET_LINK_MASK; } if (is_revoked) { flags |= telegram_api::messages_getExportedChatInvites::REVOKED_MASK; } - send_query(G()->net_query_creator().create(telegram_api::messages_getExportedChatInvites( - flags, false /*ignored*/, std::move(input_peer), std::move(input_user), 0, offset_invite_link, limit))); + send_query(G()->net_query_creator().create( + telegram_api::messages_getExportedChatInvites(flags, false /*ignored*/, std::move(input_peer), + std::move(input_user), offset_date, offset_invite_link, limit))); } void on_result(uint64 id, BufferSlice packet) override { @@ -7217,7 +7219,7 @@ void ContactsManager::edit_dialog_invite_link(DialogId dialog_id, const string & } void ContactsManager::get_dialog_invite_links(DialogId dialog_id, UserId administrator_user_id, bool is_revoked, - const string &offset_invite_link, int32 limit, + int32 offset_date, const string &offset_invite_link, int32 limit, Promise> &&promise) { TRY_STATUS_PROMISE(promise, can_manage_dialog_invite_links(dialog_id)); @@ -7230,7 +7232,7 @@ void ContactsManager::get_dialog_invite_links(DialogId dialog_id, UserId adminis } td_->create_handler(std::move(promise)) - ->send(dialog_id, administrator_user_id, is_revoked, offset_invite_link, limit); + ->send(dialog_id, administrator_user_id, is_revoked, offset_date, offset_invite_link, limit); } void ContactsManager::get_dialog_invite_link_users( diff --git a/td/telegram/ContactsManager.h b/td/telegram/ContactsManager.h index ad9b9f135..09f5aade7 100644 --- a/td/telegram/ContactsManager.h +++ b/td/telegram/ContactsManager.h @@ -398,7 +398,7 @@ class ContactsManager : public Actor { void edit_dialog_invite_link(DialogId dialog_id, const string &link, int32 expire_date, int32 usage_limit, bool is_revoked, Promise> &&promise); - void get_dialog_invite_links(DialogId dialog_id, UserId administrator_user_id, bool is_revoked, + void get_dialog_invite_links(DialogId dialog_id, UserId administrator_user_id, bool is_revoked, int32 offset_date, const string &offset_invite_link, int32 limit, Promise> &&promise); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 24dfc126c..3be1c17c0 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -6326,8 +6326,8 @@ void Td::on_request(uint64 id, td_api::getChatInviteLinks &request) { CREATE_REQUEST_PROMISE(); CLEAN_INPUT_STRING(request.offset_invite_link_); contacts_manager_->get_dialog_invite_links(DialogId(request.chat_id_), UserId(request.administrator_user_id_), - request.is_revoked_, request.offset_invite_link_, request.limit_, - std::move(promise)); + request.is_revoked_, request.offset_date_, request.offset_invite_link_, + request.limit_, std::move(promise)); } void Td::on_request(uint64 id, td_api::getChatInviteLinkMembers &request) { diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 55900c391..9dc50a8c6 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -2713,11 +2713,13 @@ class CliClient final : public Actor { } else if (op == "gcil" || op == "gcilr") { string chat_id; string administrator_user_id; + int32 offset_date; string offset_invite_link; string limit; - get_args(args, chat_id, administrator_user_id, offset_invite_link, limit); - send_request(td_api::make_object( - as_chat_id(chat_id), as_user_id(administrator_user_id), op == "gcilr", offset_invite_link, as_limit(limit))); + get_args(args, chat_id, administrator_user_id, offset_date, offset_invite_link, limit); + send_request(td_api::make_object(as_chat_id(chat_id), + as_user_id(administrator_user_id), op == "gcilr", + offset_date, offset_invite_link, as_limit(limit))); } else if (op == "gcilm") { string chat_id; string invite_link;