Replaced bool with std::optional in AdminLog::FilterValue.

This commit is contained in:
23rd 2024-08-21 14:26:08 +03:00
parent 6ba5d5f16b
commit 8011adb219
3 changed files with 12 additions and 14 deletions

View file

@ -34,17 +34,15 @@ struct FilterValue final {
using Flags = base::flags<Flag>; using Flags = base::flags<Flag>;
friend inline constexpr bool is_flag_type(Flag) { return true; }; friend inline constexpr bool is_flag_type(Flag) { return true; };
// Empty "flags" means all events. // Std::nullopt "flags" means all events.
Flags flags = 0; std::optional<Flags> flags = std::nullopt;
std::vector<not_null<UserData*>> admins; // Std::nullopt admins means all users.
bool allUsers = true; std::optional<std::vector<not_null<UserData*>>> admins = std::nullopt;
}; };
inline bool operator==(const FilterValue &a, const FilterValue &b) { inline bool operator==(const FilterValue &a, const FilterValue &b) {
return (a.flags == b.flags) return (a.flags == b.flags) && (a.admins == b.admins);
&& (a.admins == b.admins)
&& (a.allUsers == b.allUsers);
} }
inline bool operator!=(const FilterValue &a, const FilterValue &b) { inline bool operator!=(const FilterValue &a, const FilterValue &b) {

View file

@ -512,7 +512,7 @@ void InnerWidget::clearAndRequestLog() {
void InnerWidget::updateEmptyText() { void InnerWidget::updateEmptyText() {
auto hasSearch = !_searchQuery.isEmpty(); auto hasSearch = !_searchQuery.isEmpty();
auto hasFilter = (_filter.flags != 0) || !_filter.allUsers; auto hasFilter = _filter.flags || _filter.admins;
auto text = Ui::Text::Semibold((hasSearch || hasFilter) auto text = Ui::Text::Semibold((hasSearch || hasFilter)
? tr::lng_admin_log_no_results_title(tr::now) ? tr::lng_admin_log_no_results_title(tr::now)
: tr::lng_admin_log_no_events_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 Flag = MTPDchannelAdminLogEventsFilter::Flag;
using LocalFlag = FilterValue::Flag; using LocalFlag = FilterValue::Flag;
const auto empty = MTPDchannelAdminLogEventsFilter::Flags(0); const auto empty = MTPDchannelAdminLogEventsFilter::Flags(0);
const auto f = _filter.flags; const auto f = _filter.flags.value_or(LocalFlag());
return empty return empty
| ((f & LocalFlag::Join) ? Flag::f_join : empty) | ((f & LocalFlag::Join) ? Flag::f_join : empty)
| ((f & LocalFlag::Leave) ? Flag::f_leave : empty) | ((f & LocalFlag::Leave) ? Flag::f_leave : empty)
@ -758,10 +758,10 @@ void InnerWidget::preloadMore(Direction direction) {
flags |= MTPchannels_GetAdminLog::Flag::f_events_filter; flags |= MTPchannels_GetAdminLog::Flag::f_events_filter;
} }
auto admins = QVector<MTPInputUser>(0); auto admins = QVector<MTPInputUser>(0);
if (!_filter.allUsers) { if (_filter.admins) {
if (!_filter.admins.empty()) { if (!_filter.admins->empty()) {
admins.reserve(_filter.admins.size()); admins.reserve(_filter.admins->size());
for (auto &admin : _filter.admins) { for (const auto &admin : (*_filter.admins)) {
admins.push_back(admin->inputUser); admins.push_back(admin->inputUser);
} }
} }

View file

@ -141,7 +141,7 @@ FixedBar::FixedBar(
} }
void FixedBar::applyFilter(const FilterValue &value) { void FixedBar::applyFilter(const FilterValue &value) {
auto hasFilter = (value.flags != 0) || !value.allUsers; auto hasFilter = value.flags || value.admins;
_backButton->setText(hasFilter _backButton->setText(hasFilter
? tr::lng_admin_log_title_selected(tr::now) ? tr::lng_admin_log_title_selected(tr::now)
: tr::lng_admin_log_title_all(tr::now)); : tr::lng_admin_log_title_all(tr::now));