From 30cd3cb68144521eee9026cd077137e6e8cbd4e0 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 20 Nov 2021 09:46:28 +0300 Subject: [PATCH] Removed MTP* from AdminLog::FilterValue. --- .../admin_log/history_admin_log_filter.cpp | 47 +++++++++++++------ .../admin_log/history_admin_log_inner.cpp | 26 +++++++++- .../admin_log/history_admin_log_section.h | 25 +++++++++- 3 files changed, 81 insertions(+), 17 deletions(-) diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp index 69c81cd14..6030ca61a 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp @@ -183,7 +183,7 @@ private: QPointer _allFlags; base::flat_map< - MTPDchannelAdminLogEventsFilter::Flags, + FilterValue::Flags, QPointer> _filterFlags; QPointer _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(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) { diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp index 405f015ba..c8ea855df 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp @@ -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(admins), MTP_long(maxId), MTP_long(minId), diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.h b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.h index 791ffd150..fea67d9a2 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.h +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.h @@ -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; + friend inline constexpr bool is_flag_type(Flag) { return true; }; + // Empty "flags" means all events. - MTPDchannelAdminLogEventsFilter::Flags flags = 0; + Flags flags = 0; std::vector> admins; bool allUsers = true; };