From 0c9943c42e9c9383e6b2bd50b8dc6da321f8f414 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 18 Mar 2022 18:14:39 +0300 Subject: [PATCH] Remove separate GET_RESTRICTED_RIGHTS flags. --- td/telegram/DialogParticipant.cpp | 16 +++++++++------- td/telegram/DialogParticipant.h | 12 +++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/td/telegram/DialogParticipant.cpp b/td/telegram/DialogParticipant.cpp index 40c2be9f3..ad623ab3b 100644 --- a/td/telegram/DialogParticipant.cpp +++ b/td/telegram/DialogParticipant.cpp @@ -249,7 +249,7 @@ int32 DialogParticipantStatus::fix_until_date(int32 date) { DialogParticipantStatus DialogParticipantStatus::Creator(bool is_member, bool is_anonymous, string rank) { return DialogParticipantStatus(Type::Creator, - AdministratorRights::ALL_ADMINISTRATOR_RIGHTS | ALL_PERMISSION_RIGHTS | + AdministratorRights::ALL_ADMINISTRATOR_RIGHTS | ALL_RESTRICTED_RIGHTS | (is_member ? IS_MEMBER : 0) | (is_anonymous ? IS_ANONYMOUS : 0), 0, std::move(rank)); } @@ -271,11 +271,13 @@ DialogParticipantStatus DialogParticipantStatus::Administrator(bool is_anonymous return Member(); } flags = flags | (static_cast(can_be_edited) * CAN_BE_EDITED); - return DialogParticipantStatus(Type::Administrator, IS_MEMBER | ALL_RESTRICTED_RIGHTS | flags, 0, std::move(rank)); + return DialogParticipantStatus(Type::Administrator, + IS_MEMBER | (ALL_RESTRICTED_RIGHTS & ~ALL_ADMIN_PERMISSION_RIGHTS) | flags, 0, + std::move(rank)); } DialogParticipantStatus DialogParticipantStatus::Member() { - return DialogParticipantStatus(Type::Member, IS_MEMBER | ALL_PERMISSION_RIGHTS, 0, string()); + return DialogParticipantStatus(Type::Member, IS_MEMBER | ALL_RESTRICTED_RIGHTS, 0, string()); } DialogParticipantStatus DialogParticipantStatus::Restricted( @@ -287,14 +289,14 @@ DialogParticipantStatus DialogParticipantStatus::Restricted( can_change_info_and_settings, can_invite_users, can_pin_messages) .flags_ | (static_cast(is_member) * IS_MEMBER); - if (flags == (IS_MEMBER | ALL_PERMISSION_RIGHTS)) { + if (flags == (IS_MEMBER | ALL_RESTRICTED_RIGHTS)) { return Member(); } return DialogParticipantStatus(Type::Restricted, flags, fix_until_date(restricted_until_date), string()); } DialogParticipantStatus DialogParticipantStatus::Left() { - return DialogParticipantStatus(Type::Left, ALL_PERMISSION_RIGHTS, 0, string()); + return DialogParticipantStatus(Type::Left, ALL_RESTRICTED_RIGHTS, 0, string()); } DialogParticipantStatus DialogParticipantStatus::Banned(int32 banned_until_date) { @@ -411,7 +413,7 @@ DialogParticipantStatus DialogParticipantStatus::apply_restrictions(RestrictedRi case Type::Restricted: case Type::Left: // members and restricted are affected by default restrictions - flags &= ~ALL_PERMISSION_RIGHTS | default_restrictions.flags_; + flags &= (~ALL_RESTRICTED_RIGHTS) | default_restrictions.flags_; if (is_bot) { flags &= ~ALL_ADMIN_PERMISSION_RIGHTS; } @@ -436,7 +438,7 @@ void DialogParticipantStatus::update_restrictions() const { } else { type_ = Type::Left; } - flags_ |= ALL_PERMISSION_RIGHTS; + flags_ |= ALL_RESTRICTED_RIGHTS; } else if (type_ == Type::Banned) { type_ = Type::Left; } else { diff --git a/td/telegram/DialogParticipant.h b/td/telegram/DialogParticipant.h index 232a90f26..37af6e8b0 100644 --- a/td/telegram/DialogParticipant.h +++ b/td/telegram/DialogParticipant.h @@ -239,11 +239,9 @@ class DialogParticipantStatus { static constexpr uint32 ALL_ADMIN_PERMISSION_RIGHTS = CAN_CHANGE_INFO_AND_SETTINGS_BANNED | CAN_INVITE_USERS_BANNED | CAN_PIN_MESSAGES_BANNED; - static constexpr uint32 ALL_RESTRICTED_RIGHTS = CAN_SEND_MESSAGES | CAN_SEND_MEDIA | CAN_SEND_STICKERS | - CAN_SEND_ANIMATIONS | CAN_SEND_GAMES | CAN_USE_INLINE_BOTS | - CAN_ADD_WEB_PAGE_PREVIEWS | CAN_SEND_POLLS; - - static constexpr uint32 ALL_PERMISSION_RIGHTS = ALL_RESTRICTED_RIGHTS | ALL_ADMIN_PERMISSION_RIGHTS; + static constexpr uint32 ALL_RESTRICTED_RIGHTS = + CAN_SEND_MESSAGES | CAN_SEND_MEDIA | CAN_SEND_STICKERS | CAN_SEND_ANIMATIONS | CAN_SEND_GAMES | + CAN_USE_INLINE_BOTS | CAN_ADD_WEB_PAGE_PREVIEWS | CAN_SEND_POLLS | ALL_ADMIN_PERMISSION_RIGHTS; enum class Type : int32 { Creator, Administrator, Member, Restricted, Left, Banned }; // all fields are logically const, but should be updated in update_restrictions() @@ -261,7 +259,7 @@ class DialogParticipantStatus { } RestrictedRights get_restricted_rights() const { - return RestrictedRights(flags_ & ALL_PERMISSION_RIGHTS); + return RestrictedRights(flags_ & ALL_RESTRICTED_RIGHTS); } public: @@ -465,7 +463,7 @@ class DialogParticipantStatus { flags_ = stored_flags & ((1 << TYPE_SHIFT) - 1); if (is_creator()) { - flags_ |= AdministratorRights::ALL_ADMINISTRATOR_RIGHTS | ALL_PERMISSION_RIGHTS; + flags_ |= AdministratorRights::ALL_ADMINISTRATOR_RIGHTS | ALL_RESTRICTED_RIGHTS; } else if (is_administrator()) { flags_ |= AdministratorRights::CAN_MANAGE_DIALOG; }