2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-05 17:15:16 +00:00

Prepare legacy group restrictions checking.

This commit is contained in:
John Preston
2019-01-05 14:50:04 +04:00
parent 441989a8e1
commit 61419b57c8
25 changed files with 415 additions and 403 deletions

View File

@@ -33,10 +33,24 @@ void ChatData::setPhoto(PhotoId photoId, const MTPChatPhoto &photo) {
}
}
bool ChatData::actionsUnavailable() const {
return isDeactivated() || !amIn();
}
bool ChatData::canWrite() const {
// Duplicated in Data::CanWriteValue().
return !actionsUnavailable()
&& !amRestricted(ChatRestriction::f_send_messages);
}
bool ChatData::canEditInformation() const {
// #TODO groups
return !isDeactivated()
/*&& ((adminRights() & AdminRight::f_change_info) || amCreator())*/;
return !actionsUnavailable()
&& !amRestricted(ChatRestriction::f_change_info);
}
bool ChatData::canAddMembers() const {
return !actionsUnavailable()
&& !amRestricted(ChatRestriction::f_invite_users);
}
void ChatData::setName(const QString &newName) {
@@ -45,16 +59,14 @@ void ChatData::setName(const QString &newName) {
void ChatData::invalidateParticipants() {
// #TODO groups
auto wasCanEdit = canEditInformation();
participants.clear();
admins.clear();
//removeFlags(MTPDchat::Flag::f_admin);
invitedByMe.clear();
botStatus = 0;
if (wasCanEdit != canEditInformation()) {
Notify::peerUpdatedDelayed(this, Notify::PeerUpdate::Flag::ChatCanEdit);
}
Notify::peerUpdatedDelayed(this, Notify::PeerUpdate::Flag::MembersChanged | Notify::PeerUpdate::Flag::AdminsChanged);
Notify::peerUpdatedDelayed(
this,
UpdateFlag::MembersChanged | UpdateFlag::AdminsChanged);
}
void ChatData::setInviteLink(const QString &newInviteLink) {
@@ -63,3 +75,23 @@ void ChatData::setInviteLink(const QString &newInviteLink) {
Notify::peerUpdatedDelayed(this, UpdateFlag::InviteLinkChanged);
}
}
void ChatData::setAdminRights(const MTPChatAdminRights &rights) {
if (rights.c_chatAdminRights().vflags.v == adminRights()) {
return;
}
_adminRights.set(rights.c_chatAdminRights().vflags.v);
Notify::peerUpdatedDelayed(
this,
(UpdateFlag::RightsChanged
| UpdateFlag::AdminsChanged
| UpdateFlag::BannedUsersChanged));
}
void ChatData::setDefaultRestrictions(const MTPChatBannedRights &rights) {
if (rights.c_chatBannedRights().vflags.v == defaultRestrictions()) {
return;
}
_defaultRestrictions.set(rights.c_chatBannedRights().vflags.v);
Notify::peerUpdatedDelayed(this, UpdateFlag::RightsChanged);
}