Merge tag 'v4.15.0' into dev

# Conflicts:
#	Telegram/Resources/winrc/Telegram.rc
#	Telegram/Resources/winrc/Updater.rc
#	Telegram/SourceFiles/core/version.h
#	Telegram/SourceFiles/dialogs/dialogs_row.cpp
#	Telegram/SourceFiles/dialogs/dialogs_widget.cpp
#	Telegram/SourceFiles/history/view/history_view_message.cpp
#	Telegram/SourceFiles/info/profile/info_profile_actions.cpp
#	Telegram/lib_ui
#	snap/snapcraft.yaml
This commit is contained in:
ZavaruKitsu
2024-02-18 21:37:55 +03:00
200 changed files with 3605 additions and 1270 deletions
@@ -556,7 +556,7 @@ void SessionNavigation::showPeerByLinkResolved(
} else {
showPeerInfo(peer, params);
}
} else if (resolveType == ResolveType::Boost && peer->isBroadcast()) {
} else if (resolveType == ResolveType::Boost && peer->isChannel()) {
resolveBoostState(peer->asChannel());
} else {
// Show specific posts only in channels / supergroups.
@@ -634,7 +634,9 @@ void SessionNavigation::resolveBoostState(not_null<ChannelData*> channel) {
uiShow()->show(Box(Ui::BoostBox, Ui::BoostBoxData{
.name = channel->name(),
.boost = ParseBoostCounters(result),
.features = LookupBoostFeatures(channel),
.allowMulti = (BoostsForGift(_session) > 0),
.group = channel->isMegagroup(),
}, submit));
}).fail([=](const MTP::Error &error) {
_boostStateResolving = nullptr;
@@ -663,10 +665,12 @@ void SessionNavigation::applyBoost(
uiShow()->show(
Box(Ui::GiftForBoostsBox, name, receive, again));
} else {
uiShow()->show(Box(Ui::BoostBoxAlready));
uiShow()->show(
Box(Ui::BoostBoxAlready, channel->isMegagroup()));
}
} else if (!_session->premium()) {
uiShow()->show(Box(Ui::PremiumForBoostsBox, [=] {
const auto group = channel->isMegagroup();
uiShow()->show(Box(Ui::PremiumForBoostsBox, group, [=] {
const auto id = peerToChannel(channel->id).bare;
Settings::ShowPremium(
parentController(),
@@ -678,12 +682,16 @@ void SessionNavigation::applyBoost(
uiShow()->show(
Box(Ui::GiftForBoostsBox, name, receive, again));
} else {
uiShow()->show(Box(Ui::GiftedNoBoostsBox));
uiShow()->show(
Box(Ui::GiftedNoBoostsBox, channel->isMegagroup()));
}
done({});
} else {
const auto weak = std::make_shared<QPointer<Ui::BoxContent>>();
const auto reassign = [=](std::vector<int> slots, int sources) {
const auto reassign = [=](
std::vector<int> slots,
int groups,
int channels) {
const auto count = int(slots.size());
const auto callback = [=](Ui::BoostCounters counters) {
if (const auto strong = weak->data()) {
@@ -695,10 +703,14 @@ void SessionNavigation::applyBoost(
lt_count,
count,
lt_channels,
tr::lng_boost_reassign_channels(
tr::now,
lt_count,
sources)));
(!groups
? tr::lng_boost_reassign_channels
: !channels
? tr::lng_boost_reassign_groups
: tr::lng_boost_reassign_mixed)(
tr::now,
lt_count,
groups + channels)));
};
applyBoostsChecked(
channel,