From 63d86176f2d7441209043d361f56e924ef7157f4 Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 9 Oct 2021 13:19:38 +0300 Subject: [PATCH] Add chatInviteLinkInfo.description/requires_approval. --- td/generate/scheme/td_api.tl | 4 +++- td/telegram/ContactsManager.cpp | 13 ++++++++++--- td/telegram/ContactsManager.h | 4 +++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 8f86f1577..1748b88b3 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -592,10 +592,12 @@ chatInviteLinkMembers total_count:int32 members:vector = C //@type Contains information about the type of the chat //@title Title of the chat //@photo Chat photo; may be null +//@param_description Chat description //@member_count Number of members in the chat //@member_user_ids User identifiers of some chat members that may be known to the current user +//@requires_approval True, if the user will need to be approved by chat administrators //@is_public True, if the chat is a public supergroup or channel, i.e. it has a username or it is a location-based supergroup -chatInviteLinkInfo chat_id:int53 accessible_for:int32 type:ChatType title:string photo:chatPhotoInfo member_count:int32 member_user_ids:vector is_public:Bool = ChatInviteLinkInfo; +chatInviteLinkInfo chat_id:int53 accessible_for:int32 type:ChatType title:string photo:chatPhotoInfo description:string member_count:int32 member_user_ids:vector requires_approval:Bool is_public:Bool = ChatInviteLinkInfo; //@description Represents a basic group of 0-200 users (must be upgraded to a supergroup to accommodate more than 200 users) diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index bad7a6d23..c224e8b8c 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -12542,8 +12542,10 @@ void ContactsManager::on_get_dialog_invite_link_info(const string &invite_link, invite_link_info->dialog_id = DialogId(); invite_link_info->title = chat_invite->title_; invite_link_info->photo = get_photo(td_->file_manager_.get(), std::move(chat_invite->photo_), DialogId()); + invite_link_info->description = std::move(chat_invite->about_); invite_link_info->participant_count = chat_invite->participants_count_; invite_link_info->participant_user_ids = std::move(participant_user_ids); + invite_link_info->requires_approval = std::move(chat_invite->request_needed_); invite_link_info->is_chat = (chat_invite->flags_ & CHAT_INVITE_FLAG_IS_CHANNEL) == 0; invite_link_info->is_channel = (chat_invite->flags_ & CHAT_INVITE_FLAG_IS_CHANNEL) != 0; @@ -15953,8 +15955,7 @@ tl_object_ptr ContactsManager::get_secret_chat_object_const( secret_chat->is_outbound, secret_chat->key_hash, secret_chat->layer); } -tl_object_ptr ContactsManager::get_chat_invite_link_info_object( - const string &invite_link) const { +tl_object_ptr ContactsManager::get_chat_invite_link_info_object(const string &invite_link) { auto it = invite_link_infos_.find(invite_link); if (it == invite_link_infos_.end()) { return nullptr; @@ -15967,8 +15968,10 @@ tl_object_ptr ContactsManager::get_chat_invite_link_ string title; const DialogPhoto *photo = nullptr; DialogPhoto invite_link_photo; + string description; int32 participant_count = 0; vector member_user_ids; + bool requires_approval = false; bool is_public = false; bool is_member = false; td_api::object_ptr chat_type; @@ -16013,12 +16016,15 @@ tl_object_ptr ContactsManager::get_chat_invite_link_ default: UNREACHABLE(); } + description = get_dialog_about(dialog_id); } else { title = invite_link_info->title; invite_link_photo = as_fake_dialog_photo(invite_link_info->photo, dialog_id); photo = &invite_link_photo; + description = invite_link_info->description; participant_count = invite_link_info->participant_count; member_user_ids = get_user_ids_object(invite_link_info->participant_user_ids, "get_chat_invite_link_info_object"); + requires_approval = invite_link_info->requires_approval; is_public = invite_link_info->is_public; if (invite_link_info->is_chat) { @@ -16041,7 +16047,8 @@ tl_object_ptr ContactsManager::get_chat_invite_link_ return make_tl_object(dialog_id.get(), accessible_for, std::move(chat_type), title, get_chat_photo_info_object(td_->file_manager_.get(), photo), - participant_count, std::move(member_user_ids), is_public); + description, participant_count, std::move(member_user_ids), + requires_approval, is_public); } UserId ContactsManager::get_support_user(Promise &&promise) { diff --git a/td/telegram/ContactsManager.h b/td/telegram/ContactsManager.h index 9b266b0cf..ce1a2138c 100644 --- a/td/telegram/ContactsManager.h +++ b/td/telegram/ContactsManager.h @@ -566,7 +566,7 @@ class ContactsManager final : public Actor { tl_object_ptr get_chat_member_object(const DialogParticipant &dialog_participant) const; - tl_object_ptr get_chat_invite_link_info_object(const string &invite_link) const; + tl_object_ptr get_chat_invite_link_info_object(const string &invite_link); UserId get_support_user(Promise &&promise); @@ -927,8 +927,10 @@ class ContactsManager final : public Actor { // unknown dialog string title; Photo photo; + string description; int32 participant_count = 0; vector participant_user_ids; + bool requires_approval = false; bool is_chat = false; bool is_channel = false; bool is_public = false;