From aa8d543ed87650fbf661913f7cf99adefbcac941 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 24 Nov 2024 10:13:47 +0300 Subject: [PATCH] Fixed ability to remove peer from chats filter to make it empty. --- Telegram/SourceFiles/boxes/choose_filter_box.cpp | 4 +--- Telegram/SourceFiles/data/data_chat_filters.cpp | 10 ++++++++++ Telegram/SourceFiles/data/data_chat_filters.h | 4 ++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/boxes/choose_filter_box.cpp b/Telegram/SourceFiles/boxes/choose_filter_box.cpp index 252403af8..80ff008bc 100644 --- a/Telegram/SourceFiles/boxes/choose_filter_box.cpp +++ b/Telegram/SourceFiles/boxes/choose_filter_box.cpp @@ -126,9 +126,7 @@ bool ChooseFilterValidator::canRemove(FilterId filterId) const { const auto list = _history->owner().chatsFilters().list(); const auto i = ranges::find(list, filterId, &Data::ChatFilter::id); if (i != end(list)) { - const auto &filter = *i; - return filter.contains(_history) - && ((filter.always().size() > 1) || filter.flags()); + return Data::CanRemoveFromChatFilter(*i, _history); } return false; } diff --git a/Telegram/SourceFiles/data/data_chat_filters.cpp b/Telegram/SourceFiles/data/data_chat_filters.cpp index dab96d40d..3dd176d94 100644 --- a/Telegram/SourceFiles/data/data_chat_filters.cpp +++ b/Telegram/SourceFiles/data/data_chat_filters.cpp @@ -1086,4 +1086,14 @@ void ChatFilters::checkLoadMoreChatsLists() { } } +bool CanRemoveFromChatFilter( + const ChatFilter &filter, + not_null history) { + using Flag = ChatFilter::Flag; + const auto flagsWithoutNoReadNoArchivedNoMuted = filter.flags() + & ~(Flag::NoRead | Flag::NoArchived | Flag::NoMuted); + return (filter.always().size() > 1 || flagsWithoutNoReadNoArchivedNoMuted) + && filter.contains(history); +} + } // namespace Data diff --git a/Telegram/SourceFiles/data/data_chat_filters.h b/Telegram/SourceFiles/data/data_chat_filters.h index c33862aec..2e34cc713 100644 --- a/Telegram/SourceFiles/data/data_chat_filters.h +++ b/Telegram/SourceFiles/data/data_chat_filters.h @@ -252,4 +252,8 @@ private: }; +[[nodiscard]] bool CanRemoveFromChatFilter( + const ChatFilter &filter, + not_null history); + } // namespace Data