Remove separate GET_RESTRICTED_RIGHTS flags.
This commit is contained in:
parent
d913e6ec0e
commit
0c9943c42e
@ -249,7 +249,7 @@ int32 DialogParticipantStatus::fix_until_date(int32 date) {
|
|||||||
|
|
||||||
DialogParticipantStatus DialogParticipantStatus::Creator(bool is_member, bool is_anonymous, string rank) {
|
DialogParticipantStatus DialogParticipantStatus::Creator(bool is_member, bool is_anonymous, string rank) {
|
||||||
return DialogParticipantStatus(Type::Creator,
|
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),
|
(is_member ? IS_MEMBER : 0) | (is_anonymous ? IS_ANONYMOUS : 0),
|
||||||
0, std::move(rank));
|
0, std::move(rank));
|
||||||
}
|
}
|
||||||
@ -271,11 +271,13 @@ DialogParticipantStatus DialogParticipantStatus::Administrator(bool is_anonymous
|
|||||||
return Member();
|
return Member();
|
||||||
}
|
}
|
||||||
flags = flags | (static_cast<uint32>(can_be_edited) * CAN_BE_EDITED);
|
flags = flags | (static_cast<uint32>(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() {
|
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(
|
DialogParticipantStatus DialogParticipantStatus::Restricted(
|
||||||
@ -287,14 +289,14 @@ DialogParticipantStatus DialogParticipantStatus::Restricted(
|
|||||||
can_change_info_and_settings, can_invite_users, can_pin_messages)
|
can_change_info_and_settings, can_invite_users, can_pin_messages)
|
||||||
.flags_ |
|
.flags_ |
|
||||||
(static_cast<uint32>(is_member) * IS_MEMBER);
|
(static_cast<uint32>(is_member) * IS_MEMBER);
|
||||||
if (flags == (IS_MEMBER | ALL_PERMISSION_RIGHTS)) {
|
if (flags == (IS_MEMBER | ALL_RESTRICTED_RIGHTS)) {
|
||||||
return Member();
|
return Member();
|
||||||
}
|
}
|
||||||
return DialogParticipantStatus(Type::Restricted, flags, fix_until_date(restricted_until_date), string());
|
return DialogParticipantStatus(Type::Restricted, flags, fix_until_date(restricted_until_date), string());
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogParticipantStatus DialogParticipantStatus::Left() {
|
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) {
|
DialogParticipantStatus DialogParticipantStatus::Banned(int32 banned_until_date) {
|
||||||
@ -411,7 +413,7 @@ DialogParticipantStatus DialogParticipantStatus::apply_restrictions(RestrictedRi
|
|||||||
case Type::Restricted:
|
case Type::Restricted:
|
||||||
case Type::Left:
|
case Type::Left:
|
||||||
// members and restricted are affected by default restrictions
|
// 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) {
|
if (is_bot) {
|
||||||
flags &= ~ALL_ADMIN_PERMISSION_RIGHTS;
|
flags &= ~ALL_ADMIN_PERMISSION_RIGHTS;
|
||||||
}
|
}
|
||||||
@ -436,7 +438,7 @@ void DialogParticipantStatus::update_restrictions() const {
|
|||||||
} else {
|
} else {
|
||||||
type_ = Type::Left;
|
type_ = Type::Left;
|
||||||
}
|
}
|
||||||
flags_ |= ALL_PERMISSION_RIGHTS;
|
flags_ |= ALL_RESTRICTED_RIGHTS;
|
||||||
} else if (type_ == Type::Banned) {
|
} else if (type_ == Type::Banned) {
|
||||||
type_ = Type::Left;
|
type_ = Type::Left;
|
||||||
} else {
|
} else {
|
||||||
|
@ -239,11 +239,9 @@ class DialogParticipantStatus {
|
|||||||
static constexpr uint32 ALL_ADMIN_PERMISSION_RIGHTS =
|
static constexpr uint32 ALL_ADMIN_PERMISSION_RIGHTS =
|
||||||
CAN_CHANGE_INFO_AND_SETTINGS_BANNED | CAN_INVITE_USERS_BANNED | CAN_PIN_MESSAGES_BANNED;
|
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 |
|
static constexpr uint32 ALL_RESTRICTED_RIGHTS =
|
||||||
CAN_SEND_ANIMATIONS | CAN_SEND_GAMES | CAN_USE_INLINE_BOTS |
|
CAN_SEND_MESSAGES | CAN_SEND_MEDIA | CAN_SEND_STICKERS | CAN_SEND_ANIMATIONS | CAN_SEND_GAMES |
|
||||||
CAN_ADD_WEB_PAGE_PREVIEWS | CAN_SEND_POLLS;
|
CAN_USE_INLINE_BOTS | CAN_ADD_WEB_PAGE_PREVIEWS | CAN_SEND_POLLS | ALL_ADMIN_PERMISSION_RIGHTS;
|
||||||
|
|
||||||
static constexpr uint32 ALL_PERMISSION_RIGHTS = ALL_RESTRICTED_RIGHTS | ALL_ADMIN_PERMISSION_RIGHTS;
|
|
||||||
|
|
||||||
enum class Type : int32 { Creator, Administrator, Member, Restricted, Left, Banned };
|
enum class Type : int32 { Creator, Administrator, Member, Restricted, Left, Banned };
|
||||||
// all fields are logically const, but should be updated in update_restrictions()
|
// all fields are logically const, but should be updated in update_restrictions()
|
||||||
@ -261,7 +259,7 @@ class DialogParticipantStatus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RestrictedRights get_restricted_rights() const {
|
RestrictedRights get_restricted_rights() const {
|
||||||
return RestrictedRights(flags_ & ALL_PERMISSION_RIGHTS);
|
return RestrictedRights(flags_ & ALL_RESTRICTED_RIGHTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -465,7 +463,7 @@ class DialogParticipantStatus {
|
|||||||
flags_ = stored_flags & ((1 << TYPE_SHIFT) - 1);
|
flags_ = stored_flags & ((1 << TYPE_SHIFT) - 1);
|
||||||
|
|
||||||
if (is_creator()) {
|
if (is_creator()) {
|
||||||
flags_ |= AdministratorRights::ALL_ADMINISTRATOR_RIGHTS | ALL_PERMISSION_RIGHTS;
|
flags_ |= AdministratorRights::ALL_ADMINISTRATOR_RIGHTS | ALL_RESTRICTED_RIGHTS;
|
||||||
} else if (is_administrator()) {
|
} else if (is_administrator()) {
|
||||||
flags_ |= AdministratorRights::CAN_MANAGE_DIALOG;
|
flags_ |= AdministratorRights::CAN_MANAGE_DIALOG;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user