Moved out all values of premium limits to single place.

This commit is contained in:
23rd 2022-06-16 01:24:10 +03:00
parent 08ebff4e5d
commit 7b00671ccf
14 changed files with 333 additions and 275 deletions

View file

@ -498,6 +498,8 @@ PRIVATE
data/data_photo_media.h
data/data_poll.cpp
data/data_poll.h
data/data_premium_limits.cpp
data/data_premium_limits.h
data/data_pts_waiter.cpp
data/data_pts_waiter.h
data/data_replies_list.cpp

View file

@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_photo_media.h"
#include "data/data_session.h"
#include "data/data_user.h"
#include "data/data_premium_limits.h"
#include "editor/photo_editor_layer_widget.h"
#include "history/history_drag_area.h"
#include "history/history_item.h"
@ -653,12 +654,7 @@ void EditCaptionBox::setInnerFocus() {
bool EditCaptionBox::validateLength(const QString &text) const {
const auto session = &_controller->session();
const auto limit = CurrentPremiumLimit(
session,
"caption_length_limit_default",
1024,
"caption_length_limit_premium",
2048);
const auto limit = Data::PremiumLimits(session).captionLengthCurrent();
const auto remove = int(text.size()) - limit;
if (remove <= 0) {
return true;

View file

@ -16,7 +16,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/toasts/common_toasts.h"
#include "main/main_session.h"
#include "main/main_account.h"
#include "main/main_app_config.h"
#include "main/main_domain.h"
#include "boxes/peer_list_controllers.h"
#include "boxes/peers/prepare_short_info_box.h" // PrepareShortInfoBox
@ -26,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_channel.h"
#include "data/data_session.h"
#include "data/data_folder.h"
#include "data/data_premium_limits.h"
#include "lang/lang_keys.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
@ -397,13 +397,6 @@ std::unique_ptr<PeerListRow> PublicsController::createRow(
return result;
}
[[nodiscard]] float64 Limit(
not_null<Main::Session*> session,
const QString &key,
int fallback) {
return 1. * AppConfigLimit(session, key, fallback);
}
void SimpleLimitBox(
not_null<Ui::GenericBox*> box,
not_null<Main::Session*> session,
@ -496,20 +489,13 @@ void SimplePinsLimitBox(
not_null<Ui::GenericBox*> box,
not_null<Main::Session*> session,
const QString &refAddition,
const QString &keyDefault,
int limitDefault,
const QString &keyPremium,
int limitPremium,
int currentCount) {
float64 defaultLimit,
float64 premiumLimit,
float64 currentCount) {
const auto premium = session->premium();
const auto premiumPossible = session->premiumPossible();
const auto defaultLimit = Limit(session, keyDefault, limitDefault);
const auto premiumLimit = Limit(session, keyPremium, limitPremium);
const auto current = std::clamp(
float64(currentCount),
defaultLimit,
premiumLimit);
const auto current = std::clamp(currentCount, defaultLimit, premiumLimit);
auto text = rpl::combine(
tr::lng_filter_pin_limit1(
@ -544,8 +530,9 @@ void ChannelsLimitBox(
const auto premium = session->premium();
const auto premiumPossible = session->premiumPossible();
const auto defaultLimit = Limit(session, "channels_limit_default", 500);
const auto premiumLimit = Limit(session, "channels_limit_premium", 1000);
const auto limits = Data::PremiumLimits(session);
const auto defaultLimit = float64(limits.channelsDefault());
const auto premiumLimit = float64(limits.channelsPremium());
const auto current = (premium ? premiumLimit : defaultLimit);
auto text = rpl::combine(
@ -635,14 +622,9 @@ void PublicLinksLimitBox(
const auto premium = session->premium();
const auto premiumPossible = session->premiumPossible();
const auto defaultLimit = Limit(
session,
"channels_public_limit_default",
10);
const auto premiumLimit = Limit(
session,
"channels_public_limit_premium",
20);
const auto limits = Data::PremiumLimits(session);
const auto defaultLimit = float64(limits.channelsPublicDefault());
const auto premiumLimit = float64(limits.channelsPublicPremium());
const auto current = (premium ? premiumLimit : defaultLimit);
auto text = rpl::combine(
@ -682,7 +664,7 @@ void PublicLinksLimitBox(
delegate->setContent(content);
controller->setDelegate(delegate);
const auto count = Limit(session, "channels_public_limit_default", 10);
const auto count = defaultLimit;
const auto placeholder = box->addRow(
object_ptr<PeerListDummy>(box, count, st::defaultPeerList),
{});
@ -701,14 +683,9 @@ void FilterChatsLimitBox(
const auto premium = session->premium();
const auto premiumPossible = session->premiumPossible();
const auto defaultLimit = Limit(
session,
"dialog_filters_chats_limit_default",
100);
const auto premiumLimit = Limit(
session,
"dialog_filters_chats_limit_premium",
200);
const auto limits = Data::PremiumLimits(session);
const auto defaultLimit = float64(limits.dialogFiltersChatsDefault());
const auto premiumLimit = float64(limits.dialogFiltersChatsPremium());
const auto current = std::clamp(
float64(currentCount),
defaultLimit,
@ -746,14 +723,9 @@ void FiltersLimitBox(
const auto premium = session->premium();
const auto premiumPossible = session->premiumPossible();
const auto defaultLimit = Limit(
session,
"dialog_filters_limit_default",
10);
const auto premiumLimit = Limit(
session,
"dialog_filters_limit_premium",
20);
const auto limits = Data::PremiumLimits(session);
const auto defaultLimit = float64(limits.dialogFiltersDefault());
const auto premiumLimit = float64(limits.dialogFiltersPremium());
const auto current = float64(ranges::count_if(
session->data().chatsFilters().list(),
[](const Data::ChatFilter &f) { return f.id() != FilterId(); }));
@ -787,42 +759,39 @@ void FilterPinsLimitBox(
not_null<Ui::GenericBox*> box,
not_null<Main::Session*> session,
FilterId filterId) {
const auto limits = Data::PremiumLimits(session);
SimplePinsLimitBox(
box,
session,
"dialog_filters_pinned",
"dialog_filters_chats_limit_default",
100,
"dialog_filters_chats_limit_premium",
200,
limits.dialogFiltersChatsDefault(),
limits.dialogFiltersChatsPremium(),
PinsCount(session->data().chatsFilters().chatsList(filterId)));
}
void FolderPinsLimitBox(
not_null<Ui::GenericBox*> box,
not_null<Main::Session*> session) {
const auto limits = Data::PremiumLimits(session);
SimplePinsLimitBox(
box,
session,
"dialogs_folder_pinned",
"dialogs_folder_pinned_limit_default",
100,
"dialogs_folder_pinned_limit_premium",
200,
limits.dialogsFolderPinnedDefault(),
limits.dialogsFolderPinnedPremium(),
PinsCount(session->data().folder(Data::Folder::kId)->chatsList()));
}
void PinsLimitBox(
not_null<Ui::GenericBox*> box,
not_null<Main::Session*> session) {
const auto limits = Data::PremiumLimits(session);
SimplePinsLimitBox(
box,
session,
"dialog_pinned",
"dialogs_pinned_limit_default",
5,
"dialogs_pinned_limit_premium",
10,
limits.dialogsPinnedDefault(),
limits.dialogsPinnedPremium(),
PinsCount(session->data().chatsList()));
}
@ -833,14 +802,9 @@ void CaptionLimitBox(
const auto premium = session->premium();
const auto premiumPossible = session->premiumPossible();
const auto defaultLimit = Limit(
session,
"caption_length_limit_default",
1024);
const auto premiumLimit = Limit(
session,
"caption_length_limit_premium",
2048);
const auto limits = Data::PremiumLimits(session);
const auto defaultLimit = float64(limits.captionLengthDefault());
const auto premiumLimit = float64(limits.captionLengthPremium());
const auto currentLimit = premium ? premiumLimit : defaultLimit;
const auto current = std::clamp(
remove + currentLimit,
@ -896,14 +860,9 @@ void FileSizeLimitBox(
not_null<Ui::GenericBox*> box,
not_null<Main::Session*> session,
uint64 fileSizeBytes) {
const auto defaultLimit = Limit(
session,
"upload_max_fileparts_default",
4000);
const auto premiumLimit = Limit(
session,
"upload_max_fileparts_premium",
8000);
const auto limits = Data::PremiumLimits(session);
const auto defaultLimit = float64(limits.uploadMaxDefault());
const auto premiumLimit = float64(limits.uploadMaxPremium());
const auto defaultGb = float64(int(defaultLimit + 999) / 2000);
const auto premiumGb = float64(int(premiumLimit + 999) / 2000);
@ -1081,33 +1040,3 @@ void AccountsLimitBox(
QString LimitsPremiumRef(const QString &addition) {
return "double_limits__" + addition;
}
int AppConfigLimit(
not_null<Main::Session*> session,
const QString &key,
int fallback) {
return int(base::SafeRound(
session->account().appConfig().get<double>(key, 1. * fallback)));
}
int CurrentPremiumLimit(
not_null<Main::Session*> session,
const QString &keyDefault,
int limitDefault,
const QString &keyPremium,
int limitPremium) {
const auto premium = session->premium();
return AppConfigLimit(
session,
premium ? keyPremium : keyDefault,
premium ? limitPremium : limitDefault);
}
int CurrentPremiumFiltersLimit(not_null<Main::Session*> session) {
return CurrentPremiumLimit(
session,
"dialog_filters_limit_default",
10,
"dialog_filters_limit_premium",
20);
}

View file

@ -58,17 +58,3 @@ void AccountsLimitBox(
not_null<Main::Session*> session);
[[nodiscard]] QString LimitsPremiumRef(const QString &addition);
[[nodiscard]] int AppConfigLimit(
not_null<Main::Session*> session,
const QString &key,
int fallback);
[[nodiscard]] int CurrentPremiumLimit(
not_null<Main::Session*> session,
const QString &keyDefault,
int limitDefault,
const QString &keyPremium,
int limitPremium);
[[nodiscard]] int CurrentPremiumFiltersLimit(
not_null<Main::Session*> session);

View file

@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_document_media.h"
#include "data/data_streaming.h"
#include "data/data_peer_values.h"
#include "data/data_premium_limits.h"
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "main/main_domain.h" // kMaxAccounts
@ -31,7 +32,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/gradient_round_button.h"
#include "ui/wrap/padding_wrap.h"
#include "ui/boxes/confirm_box.h"
#include "boxes/premium_limits_box.h" // AppConfigLimit
#include "settings/settings_premium.h"
#include "lottie/lottie_single_player.h"
#include "history/view/media/history_view_sticker.h"
@ -1659,162 +1659,109 @@ void PremiumUnavailableBox(not_null<Ui::GenericBox*> box) {
void DoubledLimitsPreviewBox(
not_null<Ui::GenericBox*> box,
not_null<Main::Session*> session) {
const auto limits = Data::PremiumLimits(session);
auto entries = std::vector<Ui::Premium::ListEntry>();
{
const auto premium = AppConfigLimit(
session,
"channels_limit_premium",
500 * 2);
const auto premium = limits.channelsPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_channels(),
tr::lng_premium_double_limits_about_channels(
lt_count,
rpl::single(float64(premium)),
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"channels_limit_default",
500),
limits.channelsDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"dialogs_folder_pinned_limit_premium",
5 * 2);
const auto premium = limits.dialogsFolderPinnedPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_pins(),
tr::lng_premium_double_limits_about_pins(
lt_count,
rpl::single(float64(premium)),
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"dialogs_folder_pinned_limit_default",
5),
limits.dialogsFolderPinnedDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"channels_public_limit_premium",
10 * 2);
const auto premium = limits.channelsPublicPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_links(),
tr::lng_premium_double_limits_about_links(
lt_count,
rpl::single(float64(premium)),
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"channels_public_limit_default",
10),
limits.channelsPublicDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"saved_gifs_limit_premium",
200 * 2);
const auto premium = limits.gifsPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_gifs(),
tr::lng_premium_double_limits_about_gifs(
lt_count,
rpl::single(float64(premium)),
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"saved_gifs_limit_default",
200),
limits.gifsDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"stickers_faved_limit_premium",
5 * 2);
const auto premium = limits.stickersFavedPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_stickers(),
tr::lng_premium_double_limits_about_stickers(
lt_count,
rpl::single(float64(premium)),
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"stickers_faved_limit_default",
5),
limits.stickersFavedDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"about_length_limit_premium",
70 * 2);
const auto premium = limits.captionLengthPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_bio(),
tr::lng_premium_double_limits_about_bio(
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"about_length_limit_default",
70),
limits.captionLengthDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"caption_length_limit_premium",
1024 * 2);
const auto premium = limits.captionLengthPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_captions(),
tr::lng_premium_double_limits_about_captions(
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"caption_length_limit_default",
1024),
limits.captionLengthDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"dialog_filters_limit_premium",
10 * 2);
const auto premium = limits.dialogFiltersPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_folders(),
tr::lng_premium_double_limits_about_folders(
lt_count,
rpl::single(float64(premium)),
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"dialog_filters_limit_default",
10),
limits.dialogFiltersDefault(),
premium,
});
}
{
const auto premium = AppConfigLimit(
session,
"dialog_filters_chats_limit_premium",
100 * 2);
const auto premium = limits.dialogFiltersChatsPremium();
entries.push_back(Ui::Premium::ListEntry{
tr::lng_premium_double_limits_subtitle_folder_chats(),
tr::lng_premium_double_limits_about_folder_chats(
lt_count,
rpl::single(float64(premium)),
Ui::Text::RichLangValue),
AppConfigLimit(
session,
"dialog_filters_chats_limit_default",
100),
limits.dialogFiltersChatsDefault(),
premium,
});
}

View file

@ -47,6 +47,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lottie/lottie_single_player.h"
#include "data/data_document.h"
#include "data/data_user.h"
#include "data/data_premium_limits.h"
#include "media/clip/media_clip_reader.h"
#include "api/api_common.h"
#include "window/window_session_controller.h"
@ -985,12 +986,7 @@ void SendFilesBox::saveSendWaySettings() {
bool SendFilesBox::validateLength(const QString &text) const {
const auto session = &_controller->session();
const auto limit = CurrentPremiumLimit(
session,
"caption_length_limit_default",
1024,
"caption_length_limit_premium",
2048);
const auto limit = Data::PremiumLimits(session).captionLengthCurrent();
const auto remove = int(text.size()) - limit;
const auto way = _sendWay.current();
if (remove <= 0

View file

@ -0,0 +1,163 @@
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "data/data_premium_limits.h"
#include "main/main_account.h"
#include "main/main_app_config.h"
#include "main/main_session.h"
namespace Data {
PremiumLimits::PremiumLimits(not_null<Main::Session*> session)
: _session(session) {
}
int PremiumLimits::channelsDefault() const {
return appConfigLimit("channels_limit_default", 500.);
}
int PremiumLimits::channelsPremium() const {
return appConfigLimit("channels_limit_premium", 1000.);
}
int PremiumLimits::channelsCurrent() const {
return isPremium()
? channelsPremium()
: channelsDefault();
}
int PremiumLimits::gifsDefault() const {
return appConfigLimit("saved_gifs_limit_default", 200.);
}
int PremiumLimits::gifsPremium() const {
return appConfigLimit("saved_gifs_limit_premium", 400.);
}
int PremiumLimits::gifsCurrent() const {
return isPremium()
? gifsPremium()
: gifsDefault();
}
int PremiumLimits::stickersFavedDefault() const {
return appConfigLimit("stickers_faved_limit_default", 5.);
}
int PremiumLimits::stickersFavedPremium() const {
return appConfigLimit("stickers_faved_limit_premium", 10.);
}
int PremiumLimits::stickersFavedCurrent() const {
return isPremium()
? stickersFavedPremium()
: stickersFavedDefault();
}
int PremiumLimits::dialogFiltersDefault() const {
return appConfigLimit("dialog_filters_limit_default", 10.);
}
int PremiumLimits::dialogFiltersPremium() const {
return appConfigLimit("dialog_filters_limit_premium", 20.);
}
int PremiumLimits::dialogFiltersCurrent() const {
return isPremium()
? dialogFiltersPremium()
: dialogFiltersDefault();
}
int PremiumLimits::dialogFiltersChatsDefault() const {
return appConfigLimit("dialog_filters_chats_limit_default", 100.);
}
int PremiumLimits::dialogFiltersChatsPremium() const {
return appConfigLimit("dialog_filters_chats_limit_premium", 200.);
}
int PremiumLimits::dialogFiltersChatsCurrent() const {
return isPremium()
? dialogFiltersChatsPremium()
: dialogFiltersChatsDefault();
}
int PremiumLimits::dialogsPinnedDefault() const {
return appConfigLimit("dialogs_pinned_limit_default", 5.);
}
int PremiumLimits::dialogsPinnedPremium() const {
return appConfigLimit("dialogs_pinned_limit_premium", 10.);
}
int PremiumLimits::dialogsPinnedCurrent() const {
return isPremium()
? dialogsPinnedPremium()
: dialogsPinnedDefault();
}
int PremiumLimits::dialogsFolderPinnedDefault() const {
return appConfigLimit("dialogs_folder_pinned_limit_default", 100.);
}
int PremiumLimits::dialogsFolderPinnedPremium() const {
return appConfigLimit("dialogs_folder_pinned_limit_premium", 200.);
}
int PremiumLimits::dialogsFolderPinnedCurrent() const {
return isPremium()
? dialogsFolderPinnedPremium()
: dialogsFolderPinnedDefault();
}
int PremiumLimits::channelsPublicDefault() const {
return appConfigLimit("channels_public_limit_default", 10.);
}
int PremiumLimits::channelsPublicPremium() const {
return appConfigLimit("channels_public_limit_premium", 20.);
}
int PremiumLimits::channelsPublicCurrent() const {
return isPremium()
? channelsPublicPremium()
: channelsPublicDefault();
}
int PremiumLimits::captionLengthDefault() const {
return appConfigLimit("caption_length_limit_default", 1024.);
}
int PremiumLimits::captionLengthPremium() const {
return appConfigLimit("caption_length_limit_premium", 2048.);
}
int PremiumLimits::captionLengthCurrent() const {
return isPremium()
? captionLengthPremium()
: captionLengthDefault();
}
int PremiumLimits::uploadMaxDefault() const {
return appConfigLimit("upload_max_fileparts_default", 4000.);
}
int PremiumLimits::uploadMaxPremium() const {
return appConfigLimit("upload_max_fileparts_premium", 8000.);
}
int PremiumLimits::uploadMaxCurrent() const {
return isPremium()
? uploadMaxPremium()
: uploadMaxDefault();
}
int PremiumLimits::aboutLengthDefault() const {
return appConfigLimit("about_length_limit_default", 70.);
}
int PremiumLimits::aboutLengthPremium() const {
return appConfigLimit("about_length_limit_premium", 140.);
}
int PremiumLimits::aboutLengthCurrent() const {
return isPremium()
? aboutLengthPremium()
: aboutLengthDefault();
}
int PremiumLimits::appConfigLimit(
const QString &key,
float64 fallback) const {
return int(base::SafeRound(
_session->account().appConfig().get<double>(key, fallback)));
}
bool PremiumLimits::isPremium() const {
return _session->premium();
}
} // namespace Data

View file

@ -0,0 +1,74 @@
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
namespace Main {
class Session;
} // namespace Main
namespace Data {
class PremiumLimits final {
public:
PremiumLimits(not_null<Main::Session*> session);
[[nodiscard]] int channelsDefault() const;
[[nodiscard]] int channelsPremium() const;
[[nodiscard]] int channelsCurrent() const;
[[nodiscard]] int gifsDefault() const;
[[nodiscard]] int gifsPremium() const;
[[nodiscard]] int gifsCurrent() const;
[[nodiscard]] int stickersFavedDefault() const;
[[nodiscard]] int stickersFavedPremium() const;
[[nodiscard]] int stickersFavedCurrent() const;
[[nodiscard]] int dialogFiltersDefault() const;
[[nodiscard]] int dialogFiltersPremium() const;
[[nodiscard]] int dialogFiltersCurrent() const;
[[nodiscard]] int dialogFiltersChatsDefault() const;
[[nodiscard]] int dialogFiltersChatsPremium() const;
[[nodiscard]] int dialogFiltersChatsCurrent() const;
[[nodiscard]] int dialogsPinnedDefault() const;
[[nodiscard]] int dialogsPinnedPremium() const;
[[nodiscard]] int dialogsPinnedCurrent() const;
[[nodiscard]] int dialogsFolderPinnedDefault() const;
[[nodiscard]] int dialogsFolderPinnedPremium() const;
[[nodiscard]] int dialogsFolderPinnedCurrent() const;
[[nodiscard]] int channelsPublicDefault() const;
[[nodiscard]] int channelsPublicPremium() const;
[[nodiscard]] int channelsPublicCurrent() const;
[[nodiscard]] int captionLengthDefault() const;
[[nodiscard]] int captionLengthPremium() const;
[[nodiscard]] int captionLengthCurrent() const;
[[nodiscard]] int uploadMaxDefault() const;
[[nodiscard]] int uploadMaxPremium() const;
[[nodiscard]] int uploadMaxCurrent() const;
[[nodiscard]] int aboutLengthDefault() const;
[[nodiscard]] int aboutLengthPremium() const;
[[nodiscard]] int aboutLengthCurrent() const;
private:
[[nodiscard]] int appConfigLimit(
const QString &key,
float64 fallback) const;
[[nodiscard]] bool isPremium() const;
const not_null<Main::Session*> _session;
};
} // namespace Data

View file

@ -35,7 +35,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "media/player/media_player_instance.h" // instance()->play()
#include "media/audio/media_audio.h"
#include "boxes/abstract_box.h"
#include "boxes/premium_limits_box.h"
#include "passport/passport_form_controller.h"
#include "lang/lang_keys.h" // tr::lng_deleted(tr::now) in user name
#include "data/stickers/data_stickers.h"
@ -65,6 +64,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_media_rotation.h"
#include "data/data_histories.h"
#include "data/data_peer_values.h"
#include "data/data_premium_limits.h"
#include "base/platform/base_platform_info.h"
#include "base/unixtime.h"
#include "base/call_delayed.h"
@ -1862,20 +1862,12 @@ int Session::pinnedCanPin(
int Session::pinnedChatsLimit(
Data::Folder *folder,
FilterId filterId) const {
return CurrentPremiumLimit(
_session,
(filterId
? "dialog_filters_chats_limit_default"
: folder
? "dialog_filters_chats_limit_default"
: "dialogs_pinned_limit_default"),
(filterId || folder) ? 100 : 5,
(filterId
? "dialog_filters_chats_limit_premium"
: folder
? "dialog_filters_chats_limit_premium"
: "dialogs_pinned_limit_premium"),
(filterId || folder) ? 200 : 10);
const auto limits = Data::PremiumLimits(_session);
return filterId
? limits.dialogFiltersChatsCurrent()
: folder
? limits.dialogsFolderPinnedCurrent()
: limits.dialogsPinnedCurrent();
}
rpl::producer<int> Session::maxPinnedChatsLimitValue(
@ -1888,14 +1880,12 @@ rpl::producer<int> Session::maxPinnedChatsLimitValue(
return rpl::single(rpl::empty_value()) | rpl::then(
_session->account().appConfig().refreshed()
) | rpl::map([=] {
return AppConfigLimit(
_session,
(filterId
? "dialog_filters_chats_limit_premium"
: folder
? "dialog_filters_chats_limit_premium"
: "dialogs_pinned_limit_premium"),
(filterId || folder) ? 200 : 10);
const auto limits = Data::PremiumLimits(_session);
return filterId
? limits.dialogFiltersChatsPremium()
: folder
? limits.dialogsFolderPinnedPremium()
: limits.dialogsPinnedPremium();
});
}

View file

@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/boxes/confirm_box.h"
#include "ui/text/text_utilities.h"
#include "lang/lang_keys.h"
#include "data/data_premium_limits.h"
#include "boxes/premium_limits_box.h"
#include "history/history.h"
#include "history/history_item.h"
@ -43,15 +44,9 @@ constexpr auto kPremiumToastDuration = 5 * crl::time(1000);
using SetFlag = StickersSetFlag;
[[nodiscard]] TextWithEntities SavedGifsToast(
not_null<Main::Session*> session) {
const auto defaultLimit = AppConfigLimit(
session,
"saved_gifs_limit_default",
200);
const auto premiumLimit = AppConfigLimit(
session,
"saved_gifs_limit_premium",
400);
const Data::PremiumLimits &limits) {
const auto defaultLimit = limits.gifsDefault();
const auto premiumLimit = limits.gifsPremium();
return Ui::Text::Bold(
tr::lng_saved_gif_limit_title(tr::now, lt_count, defaultLimit)
).append('\n').append(
@ -65,15 +60,9 @@ using SetFlag = StickersSetFlag;
}
[[nodiscard]] TextWithEntities FaveStickersToast(
not_null<Main::Session*> session) {
const auto defaultLimit = AppConfigLimit(
session,
"stickers_faved_limit_default",
5);
const auto premiumLimit = AppConfigLimit(
session,
"stickers_faved_limit_premium",
200);
const Data::PremiumLimits &limits) {
const auto defaultLimit = limits.stickersFavedDefault();
const auto premiumLimit = limits.stickersFavedPremium();
return Ui::Text::Bold(
tr::lng_fave_sticker_limit_title(tr::now, lt_count, defaultLimit)
).append('\n').append(
@ -315,17 +304,12 @@ void Stickers::addSavedGif(
}
_savedGifs.push_front(document);
const auto session = &document->session();
const auto limit = CurrentPremiumLimit(
session,
"saved_gifs_limit_default",
200,
"saved_gifs_limit_premium",
400);
if (_savedGifs.size() > limit) {
const auto limits = Data::PremiumLimits(session);
if (_savedGifs.size() > limits.gifsCurrent()) {
_savedGifs.pop_back();
MaybeShowPremiumToast(
controller,
SavedGifsToast(session),
SavedGifsToast(limits),
LimitsPremiumRef("saved_gifs"));
}
session->local().writeSavedGifs();
@ -517,13 +501,8 @@ void Stickers::checkFavedLimit(
StickersSet &set,
Window::SessionController *controller) {
const auto session = &_owner->session();
const auto limit = CurrentPremiumLimit(
session,
"stickers_faved_limit_default",
5,
"stickers_faved_limit_premium",
200);
if (set.stickers.size() <= limit) {
const auto limits = Data::PremiumLimits(session);
if (set.stickers.size() <= limits.stickersFavedCurrent()) {
return;
}
auto removing = set.stickers.back();
@ -541,7 +520,7 @@ void Stickers::checkFavedLimit(
}
MaybeShowPremiumToast(
controller,
FaveStickersToast(session),
FaveStickersToast(limits),
LimitsPremiumRef("stickers_faved"));
}

View file

@ -25,8 +25,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_chat.h"
#include "data/data_user.h"
#include "data/data_session.h"
#include "data/data_premium_limits.h"
#include "boxes/peers/edit_peer_permissions_box.h"
#include "boxes/premium_limits_box.h"
#include "base/unixtime.h"
namespace Info {
@ -135,10 +135,8 @@ TextWithEntities AboutWithEntities(
const auto stripExternal = peer->isChat()
|| peer->isMegagroup()
|| (user && !isBot && !isPremium);
const auto limit = AppConfigLimit(
&peer->session(),
"about_length_limit_default",
70);
const auto limit = Data::PremiumLimits(&peer->session())
.aboutLengthDefault();
const auto used = (!user || isPremium || value.size() <= limit)
? value
: value.mid(0, limit) + "...";

View file

@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_peer.h"
#include "data/data_peer_values.h" // Data::AmPremiumValue.
#include "data/data_session.h"
#include "data/data_premium_limits.h"
#include "history/history.h"
#include "lang/lang_keys.h"
#include "lottie/lottie_icon.h"
@ -328,7 +329,7 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
const auto session = &controller->session();
const auto limit = [=] {
return CurrentPremiumFiltersLimit(session);
return Data::PremiumLimits(session).dialogFiltersCurrent();
};
AddSkip(container, st::settingsSectionSkip);
AddSubsectionTitle(container, tr::lng_filters_subtitle());

View file

@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_user.h"
#include "data/data_peer_values.h"
#include "data/data_changes.h"
#include "data/data_premium_limits.h"
#include "dialogs/ui/dialogs_layout.h"
#include "info/profile/info_profile_values.h"
#include "lang/lang_keys.h"
@ -455,14 +456,9 @@ void SetupRows(
void SetupBio(
not_null<Ui::VerticalLayout*> container,
not_null<UserData*> self) {
const auto defaultLimit = AppConfigLimit(
&self->session(),
"about_length_limit_default",
70);
const auto premiumLimit = AppConfigLimit(
&self->session(),
"about_length_limit_premium",
140);
const auto limits = Data::PremiumLimits(&self->session());
const auto defaultLimit = limits.aboutLengthDefault();
const auto premiumLimit = limits.aboutLengthPremium();
const auto bioStyle = [=] {
auto result = st::settingsBio;
result.textMargins.setRight(st::boxTextFont->spacew

View file

@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_folder.h"
#include "data/data_user.h"
#include "data/data_peer_values.h"
#include "data/data_premium_limits.h"
#include "lang/lang_keys.h"
#include "ui/filter_icons.h"
#include "ui/wrap/vertical_layout_reorder.h"
@ -195,7 +196,7 @@ void FiltersMenu::refresh() {
_reorder->clearPinnedIntervals();
const auto maxLimit = (reorderAll ? 1 : 0)
+ CurrentPremiumFiltersLimit(&_session->session());
+ Data::PremiumLimits(&_session->session()).dialogFiltersCurrent();
const auto premiumFrom = (reorderAll ? 0 : 1) + maxLimit;
if (!reorderAll) {
_reorder->addPinnedInterval(0, 1);