mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 15:17:07 +02:00
Support premium bio (with links and x2 length).
This commit is contained in:
parent
8ca2f6a444
commit
5bc072de07
4 changed files with 26 additions and 17 deletions
Telegram/SourceFiles
boxes
info/profile
settings
|
@ -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<Main::Session*> session,
|
||||
PeerFloodType type) {
|
||||
|
|
|
@ -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<Main::Session*> session,
|
||||
PeerFloodType type);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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<Ui::VerticalLayout*> container,
|
||||
not_null<UserData*> 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<QColor>());
|
||||
};
|
||||
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());
|
||||
|
|
Loading…
Add table
Reference in a new issue