From 3dc0e3818bbb6a8c81ab9beb7d0f5f98f38fc734 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 30 Aug 2023 17:18:55 +0300 Subject: [PATCH] Fixed redundant peer adding to always/never lists in filter from menu. --- .../SourceFiles/boxes/choose_filter_box.cpp | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/Telegram/SourceFiles/boxes/choose_filter_box.cpp b/Telegram/SourceFiles/boxes/choose_filter_box.cpp index 181dccb1e0ac0c..12d58b53840266 100644 --- a/Telegram/SourceFiles/boxes/choose_filter_box.cpp +++ b/Telegram/SourceFiles/boxes/choose_filter_box.cpp @@ -15,14 +15,11 @@ For license and copyright information please follow this link: #include "history/history.h" #include "lang/lang_keys.h" #include "main/main_session.h" -#include "ui/filter_icons.h" #include "ui/text/text_utilities.h" // Ui::Text::Bold #include "ui/widgets/buttons.h" #include "ui/widgets/popup_menu.h" #include "window/window_controller.h" #include "window/window_session_controller.h" -#include "styles/style_settings.h" -#include "styles/style_payments.h" // paymentsSectionButton #include "styles/style_media_player.h" // mediaPlayerMenuCheck namespace { @@ -32,16 +29,30 @@ Data::ChatFilter ChangedFilter( not_null history, bool add) { auto always = base::duplicate(filter.always()); - if (add) { - always.insert(history); - } else { - always.remove(history); - } auto never = base::duplicate(filter.never()); if (add) { never.remove(history); + const auto result = Data::ChatFilter( + filter.id(), + filter.title(), + filter.iconEmoji(), + filter.flags(), + filter.always(), + filter.pinned(), + std::move(never)); + if (result.contains(history)) { + return result; + } else { + never = base::duplicate(result.never()); + always.insert(history); + } } else { - never.insert(history); + const auto alwaysIt = always.find(history); + if (alwaysIt != end(always)) { + always.erase(alwaysIt); + } else { + never.insert(history); + } } return Data::ChatFilter( filter.id(),