mirror of
https://github.com/vale981/tdesktop
synced 2025-03-06 02:01:40 -05:00
Fix removing chats from dialogs.
This commit is contained in:
parent
ebc2043055
commit
bf87de3706
5 changed files with 17 additions and 19 deletions
|
@ -39,10 +39,6 @@ void ChatData::setPhoto(PhotoId photoId, const MTPChatPhoto &photo) {
|
|||
}
|
||||
}
|
||||
|
||||
bool ChatData::actionsUnavailable() const {
|
||||
return isDeactivated() || !amIn();
|
||||
}
|
||||
|
||||
auto ChatData::DefaultAdminRights() -> AdminRights {
|
||||
using Flag = AdminRight;
|
||||
return Flag::f_change_info
|
||||
|
@ -54,17 +50,15 @@ auto ChatData::DefaultAdminRights() -> AdminRights {
|
|||
|
||||
bool ChatData::canWrite() const {
|
||||
// Duplicated in Data::CanWriteValue().
|
||||
return !actionsUnavailable()
|
||||
&& !amRestricted(Restriction::f_send_messages);
|
||||
return amIn() && !amRestricted(Restriction::f_send_messages);
|
||||
}
|
||||
|
||||
bool ChatData::canEditInformation() const {
|
||||
return !actionsUnavailable()
|
||||
&& !amRestricted(Restriction::f_change_info);
|
||||
return amIn() && !amRestricted(Restriction::f_change_info);
|
||||
}
|
||||
|
||||
bool ChatData::canEditPermissions() const {
|
||||
return !actionsUnavailable()
|
||||
return amIn()
|
||||
&& (amCreator() || (adminRights() & AdminRight::f_ban_users));
|
||||
}
|
||||
|
||||
|
@ -78,18 +72,15 @@ bool ChatData::canEditPreHistoryHidden() const {
|
|||
}
|
||||
|
||||
bool ChatData::canAddMembers() const {
|
||||
return !actionsUnavailable()
|
||||
&& !amRestricted(Restriction::f_invite_users);
|
||||
return amIn() && !amRestricted(Restriction::f_invite_users);
|
||||
}
|
||||
|
||||
bool ChatData::canSendPolls() const {
|
||||
return !actionsUnavailable()
|
||||
&& !amRestricted(Restriction::f_send_polls);
|
||||
return amIn() && !amRestricted(Restriction::f_send_polls);
|
||||
}
|
||||
|
||||
bool ChatData::canAddAdmins() const {
|
||||
return !actionsUnavailable()
|
||||
&& amCreator();
|
||||
return amIn() && amCreator();
|
||||
}
|
||||
|
||||
bool ChatData::canBanMembers() const {
|
||||
|
|
|
@ -103,7 +103,10 @@ public:
|
|||
return flags() & MTPDchat_ClientFlag::f_forbidden;
|
||||
}
|
||||
bool amIn() const {
|
||||
return !isForbidden() && !haveLeft() && !wasKicked();
|
||||
return !isForbidden()
|
||||
&& !isDeactivated()
|
||||
&& !haveLeft()
|
||||
&& !wasKicked();
|
||||
}
|
||||
bool haveLeft() const {
|
||||
return flags() & MTPDchat::Flag::f_left;
|
||||
|
|
|
@ -350,7 +350,7 @@ bool PeerData::canPinMessages() const {
|
|||
if (const auto user = asUser()) {
|
||||
return user->fullFlags() & MTPDuserFull::Flag::f_can_pin_message;
|
||||
} else if (const auto chat = asChat()) {
|
||||
return !chat->isDeactivated()
|
||||
return chat->amIn()
|
||||
&& ((chat->adminRights() & ChatAdminRight::f_pin_messages)
|
||||
|| chat->amCreator());
|
||||
} else if (const auto channel = asChannel()) {
|
||||
|
|
|
@ -189,12 +189,12 @@ rpl::producer<bool> CanWriteValue(ChatData *chat) {
|
|||
MTPDchat::Flags flags,
|
||||
Data::Flags<ChatAdminRights>::Change adminRights,
|
||||
bool defaultSendMessagesRestriction) {
|
||||
const auto actionsUnavailableFlags = 0
|
||||
const auto amOutFlags = 0
|
||||
| MTPDchat::Flag::f_deactivated
|
||||
| MTPDchat_ClientFlag::f_forbidden
|
||||
| MTPDchat::Flag::f_left
|
||||
| MTPDchat::Flag::f_kicked;
|
||||
return !(flags & actionsUnavailableFlags)
|
||||
return !(flags & amOutFlags)
|
||||
&& ((flags & MTPDchat::Flag::f_creator)
|
||||
|| (adminRights.value != MTPDchatAdminRights::Flags(0))
|
||||
|| !defaultSendMessagesRestriction);
|
||||
|
|
|
@ -2304,6 +2304,10 @@ bool History::shouldBeInChatList() const {
|
|||
} else if (const auto feed = channel->feed()) {
|
||||
return !feed->needUpdateInChatList();
|
||||
}
|
||||
} else if (const auto chat = peer->asChat()) {
|
||||
return chat->amIn()
|
||||
|| !lastMessageKnown()
|
||||
|| (lastMessage() != nullptr);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue