Fixed some cases when peer may not be removed from filter from menu.

This commit is contained in:
23rd 2023-09-01 10:59:00 +03:00 committed by John Preston
parent 98bb520f47
commit 9edbb9762a

View file

@ -32,28 +32,28 @@ Data::ChatFilter ChangedFilter(
auto never = base::duplicate(filter.never()); auto never = base::duplicate(filter.never());
if (add) { if (add) {
never.remove(history); never.remove(history);
} else {
always.remove(history);
}
const auto result = Data::ChatFilter( const auto result = Data::ChatFilter(
filter.id(), filter.id(),
filter.title(), filter.title(),
filter.iconEmoji(), filter.iconEmoji(),
filter.flags(), filter.flags(),
filter.always(), std::move(always),
filter.pinned(), filter.pinned(),
std::move(never)); std::move(never));
if (result.contains(history)) { const auto in = result.contains(history);
if (in == add) {
return result; return result;
} else {
never = base::duplicate(result.never());
always.insert(history);
} }
} else { always = base::duplicate(result.always());
const auto alwaysIt = always.find(history); never = base::duplicate(result.never());
if (alwaysIt != end(always)) { if (add) {
always.erase(alwaysIt); always.insert(history);
} else { } else {
never.insert(history); never.insert(history);
} }
}
return Data::ChatFilter( return Data::ChatFilter(
filter.id(), filter.id(),
filter.title(), filter.title(),