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<Dialogs::Entry*> 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*> 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<Data::Forum*> forum) const {
 	const auto limits = Data::PremiumLimits(_session);
-	return limits.topicsPinnedCurrent();
+	return 999999;
 }
 
 int Session::pinnedChatsLimit(not_null<Data::SavedMessages*> saved) const {
@@ -2190,12 +2173,7 @@ rpl::producer<int> 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<int> Session::maxPinnedChatsLimitValue(
@@ -2204,18 +2182,12 @@ rpl::producer<int> 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<int> Session::maxPinnedChatsLimitValue(
 		not_null<Data::Forum*> forum) const {
-	return _session->appConfig().value(
-	) | rpl::map([limits = Data::PremiumLimits(_session)] {
-		return limits.topicsPinnedCurrent();
-	});
+	return rpl::single(999999);
 }
 
 rpl::producer<int> Session::maxPinnedChatsLimitValue(
@@ -2224,10 +2196,7 @@ rpl::producer<int> 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 {
