Use class for DialogParticipantsFilter.
GitOrigin-RevId: 56fc4ee7a35412db965c668f6a116ae29074f0a4
This commit is contained in:
parent
80d19432bf
commit
3f143b013a
@ -13321,18 +13321,18 @@ std::pair<int32, vector<DialogParticipant>> ContactsManager::search_chat_partici
|
||||
}
|
||||
|
||||
auto is_dialog_participant_suitable = [this](const DialogParticipant &participant, DialogParticipantsFilter filter) {
|
||||
switch (filter) {
|
||||
case DialogParticipantsFilter::Contacts:
|
||||
switch (filter.type) {
|
||||
case DialogParticipantsFilter::Type::Contacts:
|
||||
return is_user_contact(participant.user_id);
|
||||
case DialogParticipantsFilter::Administrators:
|
||||
case DialogParticipantsFilter::Type::Administrators:
|
||||
return participant.status.is_administrator();
|
||||
case DialogParticipantsFilter::Members:
|
||||
case DialogParticipantsFilter::Type::Members:
|
||||
return participant.status.is_member(); // should be always true
|
||||
case DialogParticipantsFilter::Restricted:
|
||||
case DialogParticipantsFilter::Type::Restricted:
|
||||
return participant.status.is_restricted(); // should be always false
|
||||
case DialogParticipantsFilter::Banned:
|
||||
case DialogParticipantsFilter::Type::Banned:
|
||||
return participant.status.is_banned(); // should be always false
|
||||
case DialogParticipantsFilter::Bots:
|
||||
case DialogParticipantsFilter::Type::Bots:
|
||||
return is_user_bot(participant.user_id);
|
||||
default:
|
||||
UNREACHABLE();
|
||||
|
@ -802,24 +802,24 @@ StringBuilder &operator<<(StringBuilder &string_builder, const ChannelParticipan
|
||||
|
||||
DialogParticipantsFilter get_dialog_participants_filter(const tl_object_ptr<td_api::ChatMembersFilter> &filter) {
|
||||
if (filter == nullptr) {
|
||||
return DialogParticipantsFilter::Members;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Members};
|
||||
}
|
||||
switch (filter->get_id()) {
|
||||
case td_api::chatMembersFilterContacts::ID:
|
||||
return DialogParticipantsFilter::Contacts;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Contacts};
|
||||
case td_api::chatMembersFilterAdministrators::ID:
|
||||
return DialogParticipantsFilter::Administrators;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Administrators};
|
||||
case td_api::chatMembersFilterMembers::ID:
|
||||
return DialogParticipantsFilter::Members;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Members};
|
||||
case td_api::chatMembersFilterRestricted::ID:
|
||||
return DialogParticipantsFilter::Restricted;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Restricted};
|
||||
case td_api::chatMembersFilterBanned::ID:
|
||||
return DialogParticipantsFilter::Banned;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Banned};
|
||||
case td_api::chatMembersFilterBots::ID:
|
||||
return DialogParticipantsFilter::Bots;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Bots};
|
||||
default:
|
||||
UNREACHABLE();
|
||||
return DialogParticipantsFilter::Members;
|
||||
return DialogParticipantsFilter{DialogParticipantsFilter::Type::Members};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -443,7 +443,14 @@ class ChannelParticipantsFilter {
|
||||
|
||||
StringBuilder &operator<<(StringBuilder &string_builder, const ChannelParticipantsFilter &filter);
|
||||
|
||||
enum class DialogParticipantsFilter : int32 { Contacts, Administrators, Members, Restricted, Banned, Bots };
|
||||
class DialogParticipantsFilter {
|
||||
public:
|
||||
enum class Type : int32 { Contacts, Administrators, Members, Restricted, Banned, Bots };
|
||||
Type type;
|
||||
|
||||
explicit DialogParticipantsFilter(Type type) : type(type) {
|
||||
}
|
||||
};
|
||||
|
||||
DialogParticipantsFilter get_dialog_participants_filter(const tl_object_ptr<td_api::ChatMembersFilter> &filter);
|
||||
|
||||
|
@ -29761,25 +29761,25 @@ DialogParticipant MessagesManager::get_dialog_participant(DialogId dialog_id, Us
|
||||
std::pair<int32, vector<DialogParticipant>> MessagesManager::search_private_chat_participants(
|
||||
UserId my_user_id, UserId peer_user_id, const string &query, int32 limit, DialogParticipantsFilter filter) const {
|
||||
vector<UserId> user_ids;
|
||||
switch (filter) {
|
||||
case DialogParticipantsFilter::Contacts:
|
||||
switch (filter.type) {
|
||||
case DialogParticipantsFilter::Type::Contacts:
|
||||
if (peer_user_id.is_valid() && td_->contacts_manager_->is_user_contact(peer_user_id)) {
|
||||
user_ids.push_back(peer_user_id);
|
||||
}
|
||||
break;
|
||||
case DialogParticipantsFilter::Administrators:
|
||||
case DialogParticipantsFilter::Type::Administrators:
|
||||
break;
|
||||
case DialogParticipantsFilter::Members:
|
||||
case DialogParticipantsFilter::Type::Members:
|
||||
user_ids.push_back(my_user_id);
|
||||
if (peer_user_id.is_valid() && peer_user_id != my_user_id) {
|
||||
user_ids.push_back(peer_user_id);
|
||||
}
|
||||
break;
|
||||
case DialogParticipantsFilter::Restricted:
|
||||
case DialogParticipantsFilter::Type::Restricted:
|
||||
break;
|
||||
case DialogParticipantsFilter::Banned:
|
||||
case DialogParticipantsFilter::Type::Banned:
|
||||
break;
|
||||
case DialogParticipantsFilter::Bots:
|
||||
case DialogParticipantsFilter::Type::Bots:
|
||||
if (td_->auth_manager_->is_bot()) {
|
||||
user_ids.push_back(my_user_id);
|
||||
}
|
||||
@ -29824,39 +29824,39 @@ std::pair<int32, vector<DialogParticipant>> MessagesManager::search_dialog_parti
|
||||
tl_object_ptr<td_api::SupergroupMembersFilter> request_filter;
|
||||
string additional_query;
|
||||
int32 additional_limit = 0;
|
||||
switch (filter) {
|
||||
case DialogParticipantsFilter::Contacts:
|
||||
switch (filter.type) {
|
||||
case DialogParticipantsFilter::Type::Contacts:
|
||||
request_filter = td_api::make_object<td_api::supergroupMembersFilterContacts>();
|
||||
break;
|
||||
case DialogParticipantsFilter::Administrators:
|
||||
case DialogParticipantsFilter::Type::Administrators:
|
||||
request_filter = td_api::make_object<td_api::supergroupMembersFilterAdministrators>();
|
||||
break;
|
||||
case DialogParticipantsFilter::Members:
|
||||
case DialogParticipantsFilter::Type::Members:
|
||||
request_filter = td_api::make_object<td_api::supergroupMembersFilterSearch>(query);
|
||||
break;
|
||||
case DialogParticipantsFilter::Restricted:
|
||||
case DialogParticipantsFilter::Type::Restricted:
|
||||
request_filter = td_api::make_object<td_api::supergroupMembersFilterRestricted>(query);
|
||||
break;
|
||||
case DialogParticipantsFilter::Banned:
|
||||
case DialogParticipantsFilter::Type::Banned:
|
||||
request_filter = td_api::make_object<td_api::supergroupMembersFilterBanned>(query);
|
||||
break;
|
||||
case DialogParticipantsFilter::Bots:
|
||||
case DialogParticipantsFilter::Type::Bots:
|
||||
request_filter = td_api::make_object<td_api::supergroupMembersFilterBots>();
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
switch (filter) {
|
||||
case DialogParticipantsFilter::Contacts:
|
||||
case DialogParticipantsFilter::Administrators:
|
||||
case DialogParticipantsFilter::Bots:
|
||||
switch (filter.type) {
|
||||
case DialogParticipantsFilter::Type::Contacts:
|
||||
case DialogParticipantsFilter::Type::Administrators:
|
||||
case DialogParticipantsFilter::Type::Bots:
|
||||
additional_query = query;
|
||||
additional_limit = limit;
|
||||
limit = 100;
|
||||
break;
|
||||
case DialogParticipantsFilter::Members:
|
||||
case DialogParticipantsFilter::Restricted:
|
||||
case DialogParticipantsFilter::Banned:
|
||||
case DialogParticipantsFilter::Type::Members:
|
||||
case DialogParticipantsFilter::Type::Restricted:
|
||||
case DialogParticipantsFilter::Type::Banned:
|
||||
// query is passed to the server request
|
||||
break;
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user