diff options
Diffstat (limited to 'td/telegram/DialogParticipant.cpp')
| -rw-r--r-- | td/telegram/DialogParticipant.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/td/telegram/DialogParticipant.cpp b/td/telegram/DialogParticipant.cpp index ba9a47e7b..323ec8dbc 100644 --- a/td/telegram/DialogParticipant.cpp +++ b/td/telegram/DialogParticipant.cpp @@ -28,11 +28,12 @@ AdministratorRights::AdministratorRights(const tl_object_ptr<telegram_api::chatA if (!rights->other_) { LOG(ERROR) << "Receive wrong other flag in " << to_string(rights); } - *this = AdministratorRights( - rights->anonymous_, rights->other_, rights->change_info_, rights->post_messages_, rights->edit_messages_, - rights->delete_messages_, rights->invite_users_, rights->ban_users_, rights->pin_messages_, - rights->manage_topics_, rights->add_admins_, rights->manage_call_, rights->post_stories_, rights->edit_stories_, - rights->delete_stories_, rights->manage_direct_messages_, rights->manage_ranks_, channel_type); + *this = AdministratorRights(rights->anonymous_, rights->other_, rights->change_info_, rights->post_messages_, + rights->edit_messages_, rights->delete_messages_, rights->invite_users_, + rights->ban_users_, rights->pin_messages_, rights->manage_topics_, rights->add_admins_, + rights->manage_call_, rights->post_stories_, rights->edit_stories_, + rights->delete_stories_, rights->manage_direct_messages_, rights->manage_ranks_, + rights->manage_linked_peers_, channel_type); } AdministratorRights::AdministratorRights(const td_api::object_ptr<td_api::chatAdministratorRights> &rights, @@ -46,7 +47,7 @@ AdministratorRights::AdministratorRights(const td_api::object_ptr<td_api::chatAd rights->can_invite_users_, rights->can_restrict_members_, rights->can_pin_messages_, rights->can_manage_topics_, rights->can_promote_members_, rights->can_manage_video_chats_, rights->can_post_stories_, rights->can_edit_stories_, rights->can_delete_stories_, - rights->can_manage_direct_messages_, rights->can_manage_tags_, channel_type); + rights->can_manage_direct_messages_, rights->can_manage_tags_, false, channel_type); } AdministratorRights::AdministratorRights(bool is_anonymous, bool can_manage_dialog, bool can_change_info, @@ -55,7 +56,7 @@ AdministratorRights::AdministratorRights(bool is_anonymous, bool can_manage_dial bool can_manage_topics, bool can_promote_members, bool can_manage_calls, bool can_post_stories, bool can_edit_stories, bool can_delete_stories, bool can_manage_direct_messages, bool can_manage_ranks, - ChannelType channel_type) { + bool can_manage_linked_peers, ChannelType channel_type) { switch (channel_type) { case ChannelType::Broadcast: can_pin_messages = false; @@ -88,6 +89,7 @@ AdministratorRights::AdministratorRights(bool is_anonymous, bool can_manage_dial (static_cast<uint64>(can_delete_stories) * CAN_DELETE_STORIES) | (static_cast<uint64>(can_manage_direct_messages) * CAN_MANAGE_DIRECT_MESSAGES) | (static_cast<uint64>(can_manage_ranks) * CAN_MANAGE_RANKS) | + (static_cast<uint64>(can_manage_linked_peers) * CAN_MANAGE_LINKED_PEERS) | (static_cast<uint64>(is_anonymous) * IS_ANONYMOUS); if (flags_ != 0) { flags_ |= CAN_MANAGE_DIALOG; @@ -99,7 +101,7 @@ telegram_api::object_ptr<telegram_api::chatAdminRights> AdministratorRights::get 0, can_change_info_and_settings(), can_post_messages(), can_edit_messages(), can_delete_messages(), can_restrict_members(), can_invite_users(), can_pin_messages(), can_promote_members(), is_anonymous(), can_manage_calls(), can_manage_dialog(), can_manage_topics(), can_post_stories(), can_edit_stories(), - can_delete_stories(), can_manage_direct_messages(), can_manage_ranks(), false); + can_delete_stories(), can_manage_direct_messages(), can_manage_ranks(), can_manage_linked_peers()); } td_api::object_ptr<td_api::chatAdministratorRights> AdministratorRights::get_chat_administrator_rights_object() const { @@ -168,6 +170,9 @@ StringBuilder &operator<<(StringBuilder &string_builder, const AdministratorRigh if (status.can_manage_ranks()) { string_builder << "(manage_ranks)"; } + if (status.can_manage_linked_peers()) { + string_builder << "(manage_linked_peers)"; + } if (status.is_anonymous()) { string_builder << "(anonymous)"; } @@ -394,15 +399,16 @@ DialogParticipantStatus DialogParticipantStatus::Banned(int32 banned_until_date, DialogParticipantStatus DialogParticipantStatus::GroupAdministrator(bool is_current_user_creator, string &&rank) { return Administrator(AdministratorRights(false, true, true, false, false, true, true, true, true, false, false, true, - false, false, false, false, true, ChannelType::Unknown), + false, false, false, false, true, false, ChannelType::Unknown), std::move(rank), is_current_user_creator); } DialogParticipantStatus DialogParticipantStatus::ChannelAdministrator(bool is_current_user_creator, bool is_megagroup) { - auto rights = is_megagroup ? AdministratorRights(false, true, true, false, false, true, true, true, true, true, false, - false, false, false, false, false, true, ChannelType::Megagroup) - : AdministratorRights(false, true, false, true, true, true, false, true, false, false, - false, false, true, true, true, true, false, ChannelType::Broadcast); + auto rights = is_megagroup + ? AdministratorRights(false, true, true, false, false, true, true, true, true, true, false, false, + false, false, false, false, true, false, ChannelType::Megagroup) + : AdministratorRights(false, true, false, true, true, true, false, true, false, false, false, false, + true, true, true, true, false, false, ChannelType::Broadcast); return Administrator(rights, string(), is_current_user_creator); } |
