From 34f0aae4184bf835680f99939efeec5f94a5ab18 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 1 Dec 2022 21:44:32 +0400 Subject: [PATCH] Respect topic pin limit from appConfig. --- Telegram/SourceFiles/data/data_premium_limits.cpp | 4 ++++ Telegram/SourceFiles/data/data_premium_limits.h | 2 ++ Telegram/SourceFiles/data/data_session.cpp | 12 ++++++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/data/data_premium_limits.cpp b/Telegram/SourceFiles/data/data_premium_limits.cpp index e674d116d..0348feed8 100644 --- a/Telegram/SourceFiles/data/data_premium_limits.cpp +++ b/Telegram/SourceFiles/data/data_premium_limits.cpp @@ -101,6 +101,10 @@ int PremiumLimits::dialogsFolderPinnedCurrent() const { : dialogsFolderPinnedDefault(); } +int PremiumLimits::topicsPinnedCurrent() const { + return appConfigLimit("topics_pinned_limit", 5); +} + int PremiumLimits::channelsPublicDefault() const { return appConfigLimit("channels_public_limit_default", 10); } diff --git a/Telegram/SourceFiles/data/data_premium_limits.h b/Telegram/SourceFiles/data/data_premium_limits.h index 7b2ca7f37..e25ab880f 100644 --- a/Telegram/SourceFiles/data/data_premium_limits.h +++ b/Telegram/SourceFiles/data/data_premium_limits.h @@ -45,6 +45,8 @@ public: [[nodiscard]] int dialogsFolderPinnedPremium() const; [[nodiscard]] int dialogsFolderPinnedCurrent() const; + [[nodiscard]] int topicsPinnedCurrent() const; + [[nodiscard]] int channelsPublicDefault() const; [[nodiscard]] int channelsPublicPremium() const; [[nodiscard]] int channelsPublicCurrent() const; diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 28a559b75..c65d76900 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -84,8 +84,6 @@ namespace { using ViewElement = HistoryView::Element; -constexpr auto kTopicsPinLimit = 5; - // s: box 100x100 // m: box 320x320 // x: box 800x800 @@ -2049,7 +2047,8 @@ int Session::pinnedChatsLimit(FilterId filterId) const { } int Session::pinnedChatsLimit(not_null forum) const { - return kTopicsPinLimit; + const auto limits = Data::PremiumLimits(_session); + return limits.topicsPinnedCurrent(); } rpl::producer Session::maxPinnedChatsLimitValue( @@ -2084,7 +2083,12 @@ rpl::producer Session::maxPinnedChatsLimitValue( rpl::producer Session::maxPinnedChatsLimitValue( not_null forum) const { - return rpl::single(pinnedChatsLimit(forum)); + return rpl::single(rpl::empty_value()) | rpl::then( + _session->account().appConfig().refreshed() + ) | rpl::map([=] { + const auto limits = Data::PremiumLimits(_session); + return limits.topicsPinnedCurrent(); + }); } const std::vector &Session::pinnedChatsOrder(