diff --git a/Telegram/SourceFiles/boxes/add_contact_box.cpp b/Telegram/SourceFiles/boxes/add_contact_box.cpp index 75a74d0be..6b81f7ae2 100644 --- a/Telegram/SourceFiles/boxes/add_contact_box.cpp +++ b/Telegram/SourceFiles/boxes/add_contact_box.cpp @@ -106,14 +106,6 @@ void ChatCreateDone( } // namespace -style::InputField CreateBioFieldStyle() { - auto result = st::newGroupDescription; - result.textMargins.setRight( - st::boxTextFont->spacew - + st::boxTextFont->width(QString::number(kMaxBioLength))); - return result; -} - TextWithEntities PeerFloodErrorText( not_null session, PeerFloodType type) { diff --git a/Telegram/SourceFiles/boxes/add_contact_box.h b/Telegram/SourceFiles/boxes/add_contact_box.h index 4e7665eca..34bb6b6d6 100644 --- a/Telegram/SourceFiles/boxes/add_contact_box.h +++ b/Telegram/SourceFiles/boxes/add_contact_box.h @@ -35,16 +35,12 @@ class LinkButton; class UserpicButton; } // namespace Ui -constexpr auto kMaxBioLength = 70; - enum class PeerFloodType { Send, InviteGroup, InviteChannel, }; -[[nodiscard]] style::InputField CreateBioFieldStyle(); - [[nodiscard]] TextWithEntities PeerFloodErrorText( not_null session, PeerFloodType type); diff --git a/Telegram/SourceFiles/info/profile/info_profile_values.cpp b/Telegram/SourceFiles/info/profile/info_profile_values.cpp index 9262d7e58..26607fda2 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_values.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_values.cpp @@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_user.h" #include "data/data_session.h" #include "boxes/peers/edit_peer_permissions_box.h" +#include "boxes/premium_limits_box.h" #include "base/unixtime.h" namespace Info { @@ -125,6 +126,7 @@ TextWithEntities AboutWithEntities( auto flags = TextParseLinks | TextParseMentions; const auto user = peer->asUser(); const auto isBot = user && user->isBot(); + const auto isPremium = user && user->isPremium(); if (!user) { flags |= TextParseHashtags; } else if (isBot) { @@ -132,7 +134,14 @@ TextWithEntities AboutWithEntities( } const auto stripExternal = peer->isChat() || peer->isMegagroup() - || (user && !isBot); + || (user && !isBot && !isPremium); + const auto limit = AppConfigLimit( + &peer->session(), + "about_length_limit_default", + 70); + const auto used = (!user || isPremium || value.size() <= limit) + ? value + : value.mid(0, limit) + "..."; auto result = TextWithEntities{ value }; TextUtilities::ParseEntities(result, flags); if (stripExternal) { diff --git a/Telegram/SourceFiles/settings/settings_information.cpp b/Telegram/SourceFiles/settings/settings_information.cpp index a62b89504..f1e6bde0c 100644 --- a/Telegram/SourceFiles/settings/settings_information.cpp +++ b/Telegram/SourceFiles/settings/settings_information.cpp @@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "chat_helpers/emoji_suggestions_widget.h" #include "boxes/add_contact_box.h" #include "boxes/change_phone_box.h" +#include "boxes/premium_limits_box.h" #include "boxes/username_box.h" #include "data/data_session.h" #include "data/data_user.h" @@ -343,10 +344,18 @@ void SetupRows( void SetupBio( not_null container, not_null self) { - const auto bioStyle = [] { + const auto defaultLimit = AppConfigLimit( + &self->session(), + "about_length_limit_default", + 70); + const auto premiumLimit = AppConfigLimit( + &self->session(), + "about_length_limit_premium", + 140); + const auto bioStyle = [=] { auto result = st::settingsBio; result.textMargins.setRight(st::boxTextFont->spacew - + st::boxTextFont->width(QString::number(kMaxBioLength))); + + st::boxTextFont->width('-' + QString::number(premiumLimit))); return result; }; const auto style = Ui::AttachAsChild(container, bioStyle()); @@ -390,8 +399,11 @@ void SetupBio( text = bio->getLastText(); } changed->fire(*current != text); - const auto countLeft = qMax(kMaxBioLength - text.size(), 0); + const auto limit = self->isPremium() ? premiumLimit : defaultLimit; + const auto countLeft = limit - int(text.size()); countdown->setText(QString::number(countLeft)); + countdown->setTextColorOverride( + countLeft < 0 ? st::boxTextFgError->c : std::optional()); }; const auto save = [=] { self->session().api().saveSelfBio( @@ -435,7 +447,7 @@ void SetupBio( } }); - bio->setMaxLength(kMaxBioLength); + bio->setMaxLength(premiumLimit * 2); bio->setSubmitSettings(Ui::InputField::SubmitSettings::Both); auto cursor = bio->textCursor(); cursor.setPosition(bio->getLastText().size());