mirror of https://github.com/procxx/kepka.git
parent
35e5c2329b
commit
f0c4868b3e
|
@ -212,7 +212,9 @@ void EditAdminBox::prepare() {
|
||||||
const auto chat = peer()->asChat();
|
const auto chat = peer()->asChat();
|
||||||
const auto channel = peer()->asChannel();
|
const auto channel = peer()->asChannel();
|
||||||
const auto prepareRights = hadRights ? _oldRights : Defaults(peer());
|
const auto prepareRights = hadRights ? _oldRights : Defaults(peer());
|
||||||
const auto disabledByDefaults = DisabledByDefaultRestrictions(peer());
|
const auto disabledByDefaults = (channel && !channel->isMegagroup())
|
||||||
|
? MTPDchatAdminRights::Flags(0)
|
||||||
|
: DisabledByDefaultRestrictions(peer());
|
||||||
const auto filterByMyRights = canSave()
|
const auto filterByMyRights = canSave()
|
||||||
&& !hadRights
|
&& !hadRights
|
||||||
&& channel
|
&& channel
|
||||||
|
|
|
@ -350,16 +350,12 @@ bool PeerData::canPinMessages() const {
|
||||||
if (const auto user = asUser()) {
|
if (const auto user = asUser()) {
|
||||||
return user->fullFlags() & MTPDuserFull::Flag::f_can_pin_message;
|
return user->fullFlags() & MTPDuserFull::Flag::f_can_pin_message;
|
||||||
} else if (const auto chat = asChat()) {
|
} else if (const auto chat = asChat()) {
|
||||||
return chat->amIn()
|
return chat->amIn() && !chat->amRestricted(ChatRestriction::f_pin_messages);
|
||||||
&& ((chat->adminRights() & ChatAdminRight::f_pin_messages)
|
|
||||||
|| chat->amCreator());
|
|
||||||
} else if (const auto channel = asChannel()) {
|
} else if (const auto channel = asChannel()) {
|
||||||
if (channel->isMegagroup()) {
|
return channel->isMegagroup()
|
||||||
return (channel->adminRights() & ChatAdminRight::f_pin_messages)
|
? !channel->amRestricted(ChatRestriction::f_pin_messages)
|
||||||
|| channel->amCreator();
|
: ((channel->adminRights() & ChatAdminRight::f_edit_messages)
|
||||||
}
|
|| channel->amCreator());
|
||||||
return (channel->adminRights() & ChatAdminRight::f_edit_messages)
|
|
||||||
|| channel->amCreator();
|
|
||||||
}
|
}
|
||||||
Unexpected("Peer type in PeerData::canPinMessages.");
|
Unexpected("Peer type in PeerData::canPinMessages.");
|
||||||
}
|
}
|
||||||
|
@ -613,9 +609,13 @@ Data::RestrictionCheckResult PeerData::amRestricted(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (const auto channel = asChannel()) {
|
if (const auto channel = asChannel()) {
|
||||||
|
const auto defaultRestrictions = channel->defaultRestrictions()
|
||||||
|
| (channel->isPublic()
|
||||||
|
? (ChatRestriction::f_pin_messages | ChatRestriction::f_change_info)
|
||||||
|
: ChatRestrictions(0));
|
||||||
return (channel->amCreator() || allowByAdminRights(right, channel))
|
return (channel->amCreator() || allowByAdminRights(right, channel))
|
||||||
? Result::Allowed()
|
? Result::Allowed()
|
||||||
: (channel->defaultRestrictions() & right)
|
: (defaultRestrictions & right)
|
||||||
? Result::WithEveryone()
|
? Result::WithEveryone()
|
||||||
: (channel->restrictions() & right)
|
: (channel->restrictions() & right)
|
||||||
? Result::Explicit()
|
? Result::Explicit()
|
||||||
|
|
Loading…
Reference in New Issue