mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +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
|
@ -106,14 +106,6 @@ void ChatCreateDone(
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
style::InputField CreateBioFieldStyle() {
|
|
||||||
auto result = st::newGroupDescription;
|
|
||||||
result.textMargins.setRight(
|
|
||||||
st::boxTextFont->spacew
|
|
||||||
+ st::boxTextFont->width(QString::number(kMaxBioLength)));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
TextWithEntities PeerFloodErrorText(
|
TextWithEntities PeerFloodErrorText(
|
||||||
not_null<Main::Session*> session,
|
not_null<Main::Session*> session,
|
||||||
PeerFloodType type) {
|
PeerFloodType type) {
|
||||||
|
|
|
@ -35,16 +35,12 @@ class LinkButton;
|
||||||
class UserpicButton;
|
class UserpicButton;
|
||||||
} // namespace Ui
|
} // namespace Ui
|
||||||
|
|
||||||
constexpr auto kMaxBioLength = 70;
|
|
||||||
|
|
||||||
enum class PeerFloodType {
|
enum class PeerFloodType {
|
||||||
Send,
|
Send,
|
||||||
InviteGroup,
|
InviteGroup,
|
||||||
InviteChannel,
|
InviteChannel,
|
||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]] style::InputField CreateBioFieldStyle();
|
|
||||||
|
|
||||||
[[nodiscard]] TextWithEntities PeerFloodErrorText(
|
[[nodiscard]] TextWithEntities PeerFloodErrorText(
|
||||||
not_null<Main::Session*> session,
|
not_null<Main::Session*> session,
|
||||||
PeerFloodType type);
|
PeerFloodType type);
|
||||||
|
|
|
@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "data/data_user.h"
|
#include "data/data_user.h"
|
||||||
#include "data/data_session.h"
|
#include "data/data_session.h"
|
||||||
#include "boxes/peers/edit_peer_permissions_box.h"
|
#include "boxes/peers/edit_peer_permissions_box.h"
|
||||||
|
#include "boxes/premium_limits_box.h"
|
||||||
#include "base/unixtime.h"
|
#include "base/unixtime.h"
|
||||||
|
|
||||||
namespace Info {
|
namespace Info {
|
||||||
|
@ -125,6 +126,7 @@ TextWithEntities AboutWithEntities(
|
||||||
auto flags = TextParseLinks | TextParseMentions;
|
auto flags = TextParseLinks | TextParseMentions;
|
||||||
const auto user = peer->asUser();
|
const auto user = peer->asUser();
|
||||||
const auto isBot = user && user->isBot();
|
const auto isBot = user && user->isBot();
|
||||||
|
const auto isPremium = user && user->isPremium();
|
||||||
if (!user) {
|
if (!user) {
|
||||||
flags |= TextParseHashtags;
|
flags |= TextParseHashtags;
|
||||||
} else if (isBot) {
|
} else if (isBot) {
|
||||||
|
@ -132,7 +134,14 @@ TextWithEntities AboutWithEntities(
|
||||||
}
|
}
|
||||||
const auto stripExternal = peer->isChat()
|
const auto stripExternal = peer->isChat()
|
||||||
|| peer->isMegagroup()
|
|| 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 };
|
auto result = TextWithEntities{ value };
|
||||||
TextUtilities::ParseEntities(result, flags);
|
TextUtilities::ParseEntities(result, flags);
|
||||||
if (stripExternal) {
|
if (stripExternal) {
|
||||||
|
|
|
@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "chat_helpers/emoji_suggestions_widget.h"
|
#include "chat_helpers/emoji_suggestions_widget.h"
|
||||||
#include "boxes/add_contact_box.h"
|
#include "boxes/add_contact_box.h"
|
||||||
#include "boxes/change_phone_box.h"
|
#include "boxes/change_phone_box.h"
|
||||||
|
#include "boxes/premium_limits_box.h"
|
||||||
#include "boxes/username_box.h"
|
#include "boxes/username_box.h"
|
||||||
#include "data/data_session.h"
|
#include "data/data_session.h"
|
||||||
#include "data/data_user.h"
|
#include "data/data_user.h"
|
||||||
|
@ -343,10 +344,18 @@ void SetupRows(
|
||||||
void SetupBio(
|
void SetupBio(
|
||||||
not_null<Ui::VerticalLayout*> container,
|
not_null<Ui::VerticalLayout*> container,
|
||||||
not_null<UserData*> self) {
|
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;
|
auto result = st::settingsBio;
|
||||||
result.textMargins.setRight(st::boxTextFont->spacew
|
result.textMargins.setRight(st::boxTextFont->spacew
|
||||||
+ st::boxTextFont->width(QString::number(kMaxBioLength)));
|
+ st::boxTextFont->width('-' + QString::number(premiumLimit)));
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
const auto style = Ui::AttachAsChild(container, bioStyle());
|
const auto style = Ui::AttachAsChild(container, bioStyle());
|
||||||
|
@ -390,8 +399,11 @@ void SetupBio(
|
||||||
text = bio->getLastText();
|
text = bio->getLastText();
|
||||||
}
|
}
|
||||||
changed->fire(*current != text);
|
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->setText(QString::number(countLeft));
|
||||||
|
countdown->setTextColorOverride(
|
||||||
|
countLeft < 0 ? st::boxTextFgError->c : std::optional<QColor>());
|
||||||
};
|
};
|
||||||
const auto save = [=] {
|
const auto save = [=] {
|
||||||
self->session().api().saveSelfBio(
|
self->session().api().saveSelfBio(
|
||||||
|
@ -435,7 +447,7 @@ void SetupBio(
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
bio->setMaxLength(kMaxBioLength);
|
bio->setMaxLength(premiumLimit * 2);
|
||||||
bio->setSubmitSettings(Ui::InputField::SubmitSettings::Both);
|
bio->setSubmitSettings(Ui::InputField::SubmitSettings::Both);
|
||||||
auto cursor = bio->textCursor();
|
auto cursor = bio->textCursor();
|
||||||
cursor.setPosition(bio->getLastText().size());
|
cursor.setPosition(bio->getLastText().size());
|
||||||
|
|
Loading…
Add table
Reference in a new issue