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