Fix chat status filters (#308)
This commit is contained in:
parent
2c5f0283e2
commit
ddd9f928a4
1 changed files with 28 additions and 10 deletions
|
|
@ -316,18 +316,36 @@ bool ChatFilter::contains(not_null<History*> history) const {
|
||||||
|
|
||||||
const auto peer = history->peer;
|
const auto peer = history->peer;
|
||||||
if (const auto chat = peer->asChat()) {
|
if (const auto chat = peer->asChat()) {
|
||||||
if ((chat->amCreator() && (_flags & Flag::Owned) && !(_flags & Flag::NotOwned))
|
// if i created the chat:
|
||||||
|| (chat->hasAdminRights() && (_flags & Flag::Admin) && !(_flags & Flag::NotAdmin))
|
// // if the filter excludes owned chats, don't add in list
|
||||||
|| (!chat->amCreator() && !(_flags & Flag::Owned) && (_flags & Flag::NotOwned))
|
// // if the filter excludes non-admin chats, add only if filter includes owned chats
|
||||||
|| (!chat->hasAdminRights() && !(_flags & Flag::Admin) && (_flags & Flag::NotAdmin))) {
|
// else if i am admin in chat:
|
||||||
return true;
|
// // if the filter excludes admin chats, don't add in list
|
||||||
|
// // if the filter excludes non-owned chats, add only if filter includes admin chats
|
||||||
|
// else:
|
||||||
|
// // add in list only if filter doesn't exclude non-owned or non-admin chats
|
||||||
|
if (chat->amCreator()) {
|
||||||
|
return !(_flags & Flag::NotOwned) && ((_flags & Flag::Admin)
|
||||||
|
? (_flags & Flag::Owned)
|
||||||
|
: true);
|
||||||
|
} else if (chat->hasAdminRights()) {
|
||||||
|
return !(_flags & Flag::NotAdmin) && ((_flags & Flag::Owned)
|
||||||
|
? (_flags & Flag::Admin)
|
||||||
|
: true);
|
||||||
|
} else {
|
||||||
|
return !(_flags & Flag::Owned) && !(_flags & Flag::Admin);
|
||||||
}
|
}
|
||||||
} else if (const auto channel = peer->asChannel()) {
|
} else if (const auto channel = peer->asChannel()) {
|
||||||
if ((channel->amCreator() && (_flags & Flag::Owned) && !(_flags & Flag::NotOwned))
|
if (channel->amCreator()) {
|
||||||
|| (channel->hasAdminRights() && (_flags & Flag::Admin) && !(_flags & Flag::NotAdmin))
|
return !(_flags & Flag::NotOwned) && ((_flags & Flag::Admin)
|
||||||
|| (!channel->amCreator() && !(_flags & Flag::Owned) && (_flags & Flag::NotOwned))
|
? (_flags & Flag::Owned)
|
||||||
|| (!channel->hasAdminRights() && !(_flags & Flag::Admin) && (_flags & Flag::NotAdmin))) {
|
: true);
|
||||||
return true;
|
} else if (channel->hasAdminRights()) {
|
||||||
|
return !(_flags & Flag::NotAdmin) && ((_flags & Flag::Owned)
|
||||||
|
? (_flags & Flag::Admin)
|
||||||
|
: true);
|
||||||
|
} else {
|
||||||
|
return !(_flags & Flag::Owned) && !(_flags & Flag::Admin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue