From d608bffecbd86bcdff540fc802436399f59991d6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 7 Mar 2024 17:15:27 +0400 Subject: [PATCH] Fix limit in business features exception box. --- .../SourceFiles/boxes/filters/edit_filter_box.cpp | 12 +++++++++--- .../boxes/filters/edit_filter_chats_list.cpp | 12 ++++++------ .../boxes/filters/edit_filter_chats_list.h | 6 +++--- .../settings/business/settings_recipients_helper.cpp | 5 ++--- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp b/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp index 958d01436..ce23d235f 100644 --- a/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp +++ b/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp @@ -27,6 +27,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_chat_filters.h" #include "data/data_peer.h" #include "data/data_peer_values.h" // Data::AmPremiumValue. +#include "data/data_premium_limits.h" #include "data/data_session.h" #include "data/data_user.h" #include "core/application.h" @@ -124,6 +125,12 @@ void EditExceptions( const auto include = (options & Flag::Contacts) != Flags(0); const auto rules = data->current(); const auto session = &window->session(); + const auto limit = Data::PremiumLimits( + session + ).dialogFiltersChatsCurrent(); + const auto showLimitReached = [=] { + window->show(Box(FilterChatsLimitBox, session, limit, include)); + }; auto controller = std::make_unique( session, (include @@ -132,9 +139,8 @@ void EditExceptions( options, rules.flags() & options, include ? rules.always() : rules.never(), - [=](int count) { - return Box(FilterChatsLimitBox, session, count, include); - }); + limit, + showLimitReached); const auto rawController = controller.get(); auto initBox = [=](not_null box) { box->setCloseByOutsideClick(false); diff --git a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp index 25463f1e2..0ee2bace0 100644 --- a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp +++ b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp @@ -333,17 +333,17 @@ EditFilterChatsListController::EditFilterChatsListController( Flags options, Flags selected, const base::flat_set> &peers, - LimitBoxFactory limitBox) + int limit, + Fn showLimitReached) : ChatsListBoxController(session) , _session(session) -, _limitBox(std::move(limitBox)) +, _showLimitReached(std::move(showLimitReached)) , _title(std::move(title)) , _peers(peers) , _options(options & ~Flag::Chatlist) , _selected(selected) -, _limit(Data::PremiumLimits(session).dialogFiltersChatsCurrent()) +, _limit(limit) , _chatlist(options & Flag::Chatlist) { - Expects(_limitBox != nullptr); } Main::Session &EditFilterChatsListController::session() const { @@ -371,8 +371,8 @@ void EditFilterChatsListController::rowClicked(not_null row) { if (count < _limit || row->checked()) { delegate()->peerListSetRowChecked(row, !row->checked()); updateTitle(); - } else { - delegate()->peerListUiShow()->showBox(_limitBox(count)); + } else if (const auto copy = _showLimitReached) { + copy(); } } diff --git a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h index a9dfd3fa2..26e0529c3 100644 --- a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h +++ b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h @@ -43,7 +43,6 @@ class EditFilterChatsListController final : public ChatsListBoxController { public: using Flag = Data::ChatFilter::Flag; using Flags = Data::ChatFilter::Flags; - using LimitBoxFactory = Fn(int)>; EditFilterChatsListController( not_null session, @@ -51,7 +50,8 @@ public: Flags options, Flags selected, const base::flat_set> &peers, - LimitBoxFactory limitBox); + int limit, + Fn showLimitReached); [[nodiscard]] Main::Session &session() const override; [[nodiscard]] Flags chosenOptions() const { @@ -72,7 +72,7 @@ private: void updateTitle(); const not_null _session; - const LimitBoxFactory _limitBox; + const Fn _showLimitReached; rpl::producer _title; base::flat_set> _peers; Flags _options; diff --git a/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp b/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp index fb2ac16e9..7f7f2b715 100644 --- a/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp +++ b/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp @@ -72,9 +72,8 @@ void EditBusinessChats( options, TypesToFlags(descriptor.current.types) & options, base::flat_set>(begin(peers), end(peers)), - [=](int count) { - return nullptr; AssertIsDebug(); - }); + 100, + nullptr); const auto rawController = controller.get(); const auto save = descriptor.save; auto initBox = [=](not_null box) {