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>;
friend inline constexpr bool is_flag_type(Flag) { return true; };
// Empty "flags" means all events.
Flags flags = 0;
std::vector<not_null<UserData*>> admins;
bool allUsers = true;
// Std::nullopt "flags" means all events.
std::optional<Flags> flags = std::nullopt;
// Std::nullopt admins means all users.
std::optional<std::vector<not_null<UserData*>>> 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) {

View file

@ -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<MTPInputUser>(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);
}
}

View file

@ -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));