Removed MTP* from AdminLog::FilterValue.

This commit is contained in:
23rd 2021-11-20 09:46:28 +03:00 committed by John Preston
parent d6a30c4853
commit 30cd3cb681
3 changed files with 81 additions and 17 deletions

View File

@ -183,7 +183,7 @@ private:
QPointer<Ui::Checkbox> _allFlags;
base::flat_map<
MTPDchannelAdminLogEventsFilter::Flags,
FilterValue::Flags,
QPointer<Ui::Checkbox>> _filterFlags;
QPointer<Ui::Checkbox> _allUsers;
@ -238,8 +238,8 @@ void FilterBox::Inner::createAllActionsCheckbox(const FilterValue &filter) {
}
void FilterBox::Inner::createActionsCheckboxes(const FilterValue &filter) {
using Flag = MTPDchannelAdminLogEventsFilter::Flag;
using Flags = MTPDchannelAdminLogEventsFilter::Flags;
using Flag = FilterValue::Flag;
using Flags = FilterValue::Flags;
auto addFlag = [this, &filter](Flags flag, QString &&text) {
auto checked = (filter.flags == 0) || (filter.flags & flag);
auto checkbox = addRow(object_ptr<Ui::Checkbox>(this, std::move(text), checked, st::defaultBoxCheckbox), st::adminLogFilterLittleSkip);
@ -264,21 +264,40 @@ void FilterBox::Inner::createActionsCheckboxes(const FilterValue &filter) {
};
auto isGroup = _channel->isMegagroup();
if (isGroup) {
addFlag(Flag::f_ban | Flag::f_unban | Flag::f_kick | Flag::f_unkick, tr::lng_admin_log_filter_restrictions(tr::now));
addFlag(
Flag::Ban
| Flag::Unban
| Flag::Kick
| Flag::Unkick,
tr::lng_admin_log_filter_restrictions(tr::now));
}
addFlag(Flag::f_promote | Flag::f_demote, tr::lng_admin_log_filter_admins_new(tr::now));
addFlag(Flag::f_join | Flag::f_invite, tr::lng_admin_log_filter_members_new(tr::now));
addFlag(Flag::f_info | Flag::f_settings, _channel->isMegagroup() ? tr::lng_admin_log_filter_info_group(tr::now) : tr::lng_admin_log_filter_info_channel(tr::now));
addFlag(Flag::f_delete, tr::lng_admin_log_filter_messages_deleted(tr::now));
addFlag(Flag::f_edit, tr::lng_admin_log_filter_messages_edited(tr::now));
addFlag(
Flag::Promote | Flag::Demote,
tr::lng_admin_log_filter_admins_new(tr::now));
addFlag(
Flag::Join | Flag::Invite,
tr::lng_admin_log_filter_members_new(tr::now));
addFlag(
Flag::Info | Flag::Settings,
_channel->isMegagroup()
? tr::lng_admin_log_filter_info_group(tr::now)
: tr::lng_admin_log_filter_info_channel(tr::now));
addFlag(Flag::Delete, tr::lng_admin_log_filter_messages_deleted(tr::now));
addFlag(Flag::Edit, tr::lng_admin_log_filter_messages_edited(tr::now));
if (isGroup) {
addFlag(Flag::f_pinned, tr::lng_admin_log_filter_messages_pinned(tr::now));
addFlag(Flag::f_group_call, tr::lng_admin_log_filter_voice_chats(tr::now));
addFlag(
Flag::Pinned,
tr::lng_admin_log_filter_messages_pinned(tr::now));
addFlag(
Flag::GroupCall,
tr::lng_admin_log_filter_voice_chats(tr::now));
} else {
addFlag(Flag::f_group_call, tr::lng_admin_log_filter_voice_chats_channel(tr::now));
addFlag(
Flag::GroupCall,
tr::lng_admin_log_filter_voice_chats_channel(tr::now));
}
addFlag(Flag::f_invites, tr::lng_admin_log_filter_invite_links(tr::now));
addFlag(Flag::f_leave, tr::lng_admin_log_filter_members_removed(tr::now));
addFlag(Flag::Invites, tr::lng_admin_log_filter_invite_links(tr::now));
addFlag(Flag::Leave, tr::lng_admin_log_filter_members_removed(tr::now));
}
void FilterBox::Inner::createAllUsersCheckbox(const FilterValue &filter) {

View File

@ -723,7 +723,29 @@ void InnerWidget::preloadMore(Direction direction) {
}
auto flags = MTPchannels_GetAdminLog::Flags(0);
auto filter = MTP_channelAdminLogEventsFilter(MTP_flags(_filter.flags));
const auto filter = [&] {
using Flag = MTPDchannelAdminLogEventsFilter::Flag;
using LocalFlag = FilterValue::Flag;
const auto empty = MTPDchannelAdminLogEventsFilter::Flags(0);
const auto f = _filter.flags;
return empty
| ((f & LocalFlag::Join) ? Flag::f_join : empty)
| ((f & LocalFlag::Leave) ? Flag::f_leave : empty)
| ((f & LocalFlag::Invite) ? Flag::f_invite : empty)
| ((f & LocalFlag::Ban) ? Flag::f_ban : empty)
| ((f & LocalFlag::Unban) ? Flag::f_unban : empty)
| ((f & LocalFlag::Kick) ? Flag::f_kick : empty)
| ((f & LocalFlag::Unkick) ? Flag::f_unkick : empty)
| ((f & LocalFlag::Promote) ? Flag::f_promote : empty)
| ((f & LocalFlag::Demote) ? Flag::f_demote : empty)
| ((f & LocalFlag::Info) ? Flag::f_info : empty)
| ((f & LocalFlag::Settings) ? Flag::f_settings : empty)
| ((f & LocalFlag::Pinned) ? Flag::f_pinned : empty)
| ((f & LocalFlag::Edit) ? Flag::f_edit : empty)
| ((f & LocalFlag::Delete) ? Flag::f_delete : empty)
| ((f & LocalFlag::GroupCall) ? Flag::f_group_call : empty)
| ((f & LocalFlag::Invites) ? Flag::f_invites : empty);
}();
if (_filter.flags != 0) {
flags |= MTPchannels_GetAdminLog::Flag::f_events_filter;
}
@ -744,7 +766,7 @@ void InnerWidget::preloadMore(Direction direction) {
MTP_flags(flags),
_channel->inputChannel,
MTP_string(_searchQuery),
filter,
MTP_channelAdminLogEventsFilter(MTP_flags(filter)),
MTP_vector<MTPInputUser>(admins),
MTP_long(maxId),
MTP_long(minId),

View File

@ -29,8 +29,31 @@ class InnerWidget;
class SectionMemento;
struct FilterValue {
enum class Flag : uint32 {
Join = (1U << 0),
Leave = (1U << 1),
Invite = (1U << 2),
Ban = (1U << 3),
Unban = (1U << 4),
Kick = (1U << 5),
Unkick = (1U << 6),
Promote = (1U << 7),
Demote = (1U << 8),
Info = (1U << 9),
Settings = (1U << 10),
Pinned = (1U << 11),
Edit = (1U << 12),
Delete = (1U << 13),
GroupCall = (1U << 14),
Invites = (1U << 15),
MAX_FIELD = (1U << 15),
};
using Flags = base::flags<Flag>;
friend inline constexpr bool is_flag_type(Flag) { return true; };
// Empty "flags" means all events.
MTPDchannelAdminLogEventsFilter::Flags flags = 0;
Flags flags = 0;
std::vector<not_null<UserData*>> admins;
bool allUsers = true;
};