diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter_value.h b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter_value.h index 89d55c37f..2fc8a5a13 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter_value.h +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter_value.h @@ -34,17 +34,15 @@ struct FilterValue final { using Flags = base::flags; friend inline constexpr bool is_flag_type(Flag) { return true; }; - // Empty "flags" means all events. - Flags flags = 0; - std::vector> admins; - bool allUsers = true; + // Std::nullopt "flags" means all events. + std::optional flags = std::nullopt; + // Std::nullopt admins means all users. + std::optional>> admins = std::nullopt; }; inline bool operator==(const FilterValue &a, const FilterValue &b) { - return (a.flags == b.flags) - && (a.admins == b.admins) - && (a.allUsers == b.allUsers); + return (a.flags == b.flags) && (a.admins == b.admins); } inline bool operator!=(const FilterValue &a, const FilterValue &b) { 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 3d648fa9b..d427353e8 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp @@ -512,7 +512,7 @@ void InnerWidget::clearAndRequestLog() { void InnerWidget::updateEmptyText() { auto hasSearch = !_searchQuery.isEmpty(); - auto hasFilter = (_filter.flags != 0) || !_filter.allUsers; + auto hasFilter = _filter.flags || _filter.admins; auto text = Ui::Text::Semibold((hasSearch || hasFilter) ? tr::lng_admin_log_no_results_title(tr::now) : tr::lng_admin_log_no_events_title(tr::now)); @@ -734,7 +734,7 @@ void InnerWidget::preloadMore(Direction direction) { using Flag = MTPDchannelAdminLogEventsFilter::Flag; using LocalFlag = FilterValue::Flag; const auto empty = MTPDchannelAdminLogEventsFilter::Flags(0); - const auto f = _filter.flags; + const auto f = _filter.flags.value_or(LocalFlag()); return empty | ((f & LocalFlag::Join) ? Flag::f_join : empty) | ((f & LocalFlag::Leave) ? Flag::f_leave : empty) @@ -758,10 +758,10 @@ void InnerWidget::preloadMore(Direction direction) { flags |= MTPchannels_GetAdminLog::Flag::f_events_filter; } auto admins = QVector(0); - if (!_filter.allUsers) { - if (!_filter.admins.empty()) { - admins.reserve(_filter.admins.size()); - for (auto &admin : _filter.admins) { + if (_filter.admins) { + if (!_filter.admins->empty()) { + admins.reserve(_filter.admins->size()); + for (const auto &admin : (*_filter.admins)) { admins.push_back(admin->inputUser); } } diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp index b50db2c6b..417223ae3 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp @@ -141,7 +141,7 @@ FixedBar::FixedBar( } void FixedBar::applyFilter(const FilterValue &value) { - auto hasFilter = (value.flags != 0) || !value.allUsers; + auto hasFilter = value.flags || value.admins; _backButton->setText(hasFilter ? tr::lng_admin_log_title_selected(tr::now) : tr::lng_admin_log_title_all(tr::now));