diff -NaurBwdp a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp --- a/Telegram/SourceFiles/data/data_session.cpp 2022-12-28 03:29:59.721281542 +0700 +++ b/Telegram/SourceFiles/data/data_session.cpp 2022-12-28 03:35:05.748566381 +0700 @@ -2138,48 +2138,28 @@ void Session::applyDialog( } bool Session::pinnedCanPin(not_null entry) const { - if ([[maybe_unused]] const auto sublist = entry->asSublist()) { - if (sublist->parentChat()) { - return false; - } - const auto saved = &savedMessages(); - return pinnedChatsOrder(saved).size() < pinnedChatsLimit(saved); - } else if (const auto topic = entry->asTopic()) { - const auto forum = topic->forum(); - return pinnedChatsOrder(forum).size() < pinnedChatsLimit(forum); - } else { - const auto folder = entry->folder(); - return pinnedChatsOrder(folder).size() < pinnedChatsLimit(folder); - } + return true; } bool Session::pinnedCanPin( FilterId filterId, not_null history) const { - Expects(filterId != 0); - - const auto &list = chatsFilters().list(); - const auto i = ranges::find(list, filterId, &Data::ChatFilter::id); - return (i == end(list)) - || (i->always().contains(history)) - || (i->always().size() < pinnedChatsLimit(filterId)); + return true; } int Session::pinnedChatsLimit(Data::Folder *folder) const { const auto limits = Data::PremiumLimits(_session); - return folder - ? limits.dialogsFolderPinnedCurrent() - : limits.dialogsPinnedCurrent(); + return 999999; } int Session::pinnedChatsLimit(FilterId filterId) const { const auto limits = Data::PremiumLimits(_session); - return limits.dialogFiltersChatsCurrent(); + return 999999; } int Session::pinnedChatsLimit(not_null forum) const { const auto limits = Data::PremiumLimits(_session); - return limits.topicsPinnedCurrent(); + return 999999; } int Session::pinnedChatsLimit(not_null saved) const { @@ -2190,12 +2173,7 @@ rpl::producer Session::maxPinnedCha // We always use premium limit in the MainList limit producer, // because it slices the list to that limit. We don't want to slice // premium-ly added chats from the pinned list because of sync issues. - return _session->appConfig().value( - ) | rpl::map([folder, limits = Data::PremiumLimits(_session)] { - return folder - ? limits.dialogsFolderPinnedPremium() - : limits.dialogsPinnedPremium(); - }); + return rpl::single(999999); } rpl::producer Session::maxPinnedChatsLimitValue( @@ -2204,18 +2182,12 @@ rpl::producer Session::maxPinnedCha // We always use premium limit in the MainList limit producer, // because it slices the list to that limit. We don't want to slice // premium-ly added chats from the pinned list because of sync issues. - return _session->appConfig().value( - ) | rpl::map([limits = Data::PremiumLimits(_session)] { - return limits.dialogFiltersChatsPremium(); - }); + return rpl::single(999999); } rpl::producer Session::maxPinnedChatsLimitValue( not_null forum) const { - return _session->appConfig().value( - ) | rpl::map([limits = Data::PremiumLimits(_session)] { - return limits.topicsPinnedCurrent(); - }); + return rpl::single(999999); } rpl::producer Session::maxPinnedChatsLimitValue( @@ -2224,10 +2196,7 @@ rpl::producer Session::maxPinnedCha // We always use premium limit in the MainList limit producer, // because it slices the list to that limit. We don't want to slice // premium-ly added chats from the pinned list because of sync issues. - return _session->appConfig().value( - ) | rpl::map([limits = Data::PremiumLimits(_session)] { - return limits.savedSublistsPinnedPremium(); - }); + return rpl::single(999999); } int Session::groupFreeTranscribeLevel() const {