From 9b6b5968e23effa4e5cd15af2475442c2956155a Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 6 Jun 2022 15:20:54 +0300 Subject: [PATCH] Provided count of pinned dialogs to premium limit boxes for pins. --- .../SourceFiles/boxes/premium_limits_box.cpp | 26 ++++++++++++++----- .../SourceFiles/boxes/premium_limits_box.h | 3 ++- .../SourceFiles/window/window_peer_menu.cpp | 3 ++- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Telegram/SourceFiles/boxes/premium_limits_box.cpp b/Telegram/SourceFiles/boxes/premium_limits_box.cpp index 70bceb2b0..629c13449 100644 --- a/Telegram/SourceFiles/boxes/premium_limits_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_limits_box.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_user.h" #include "data/data_channel.h" #include "data/data_session.h" +#include "data/data_folder.h" #include "lang/lang_keys.h" #include "settings/settings_common.h" #include "settings/settings_premium.h" @@ -462,6 +463,10 @@ void SimpleLimitBox( } } +[[nodiscard]] int PinsCount(not_null list) { + return list->pinned()->order().size(); +} + void SimplePinsLimitBox( not_null box, not_null session, @@ -469,11 +474,16 @@ void SimplePinsLimitBox( const QString &keyDefault, int limitDefault, const QString &keyPremium, - int limitPremium) { + int limitPremium, + int currentCount) { const auto premium = session->premium(); const auto defaultLimit = Limit(session, keyDefault, limitDefault); const auto premiumLimit = Limit(session, keyPremium, limitPremium); + const auto current = std::clamp( + float64(currentCount), + defaultLimit, + premiumLimit); auto text = rpl::combine( tr::lng_filter_pin_limit1( @@ -497,7 +507,7 @@ void SimplePinsLimitBox( tr::lng_filter_pin_limit_title(), std::move(text), refAddition, - { defaultLimit, defaultLimit, premiumLimit, &st::premiumIconPins }, + { defaultLimit, current, premiumLimit, &st::premiumIconPins }, premium); } @@ -742,7 +752,8 @@ void FiltersLimitBox( void FilterPinsLimitBox( not_null box, - not_null session) { + not_null session, + FilterId filterId) { SimplePinsLimitBox( box, session, @@ -750,7 +761,8 @@ void FilterPinsLimitBox( "dialog_filters_chats_limit_default", 100, "dialog_filters_chats_limit_premium", - 200); + 200, + PinsCount(session->data().chatsFilters().chatsList(filterId))); } void FolderPinsLimitBox( @@ -763,7 +775,8 @@ void FolderPinsLimitBox( "dialogs_folder_pinned_limit_default", 100, "dialogs_folder_pinned_limit_premium", - 200); + 200, + PinsCount(session->data().folder(Data::Folder::kId)->chatsList())); } void PinsLimitBox( @@ -776,7 +789,8 @@ void PinsLimitBox( "dialogs_pinned_limit_default", 5, "dialogs_pinned_limit_premium", - 10); + 10, + PinsCount(session->data().chatsList())); } void CaptionLimitBox( diff --git a/Telegram/SourceFiles/boxes/premium_limits_box.h b/Telegram/SourceFiles/boxes/premium_limits_box.h index b5a1f2abe..3ce2f5175 100644 --- a/Telegram/SourceFiles/boxes/premium_limits_box.h +++ b/Telegram/SourceFiles/boxes/premium_limits_box.h @@ -32,7 +32,8 @@ void FiltersLimitBox( not_null session); void FilterPinsLimitBox( not_null box, - not_null session); + not_null session, + FilterId filterId); void FolderPinsLimitBox( not_null box, not_null session); diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 9a48a110b..39decba98 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -251,7 +251,8 @@ bool PinnedLimitReached( owner->setChatPinned(history, FilterId(), true); history->session().api().savePinnedOrder(folder); } else if (filterId) { - controller->show(Box(FilterPinsLimitBox, &history->session())); + controller->show( + Box(FilterPinsLimitBox, &history->session(), filterId)); } else if (folder) { controller->show(Box(FolderPinsLimitBox, &history->session())); } else {