diff --git a/Telegram/SourceFiles/boxes/gift_premium_box.cpp b/Telegram/SourceFiles/boxes/gift_premium_box.cpp index e36797366..ddf91ac0b 100644 --- a/Telegram/SourceFiles/boxes/gift_premium_box.cpp +++ b/Telegram/SourceFiles/boxes/gift_premium_box.cpp @@ -7,7 +7,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "boxes/gift_premium_box.h" -#include "api/api_premium.h" #include "apiwrap.h" #include "base/weak_ptr.h" #include "core/click_handler_types.h" // ClickHandlerContext. @@ -46,28 +45,27 @@ struct GiftOption final { }; using GiftOptions = std::vector; -GiftOptions GiftOptionFromTL( - const MTPDuserFull &data, - int monthlyAmount, - QString monthlyCurrency) { +GiftOptions GiftOptionFromTL(const MTPDuserFull &data) { auto result = GiftOptions(); const auto gifts = data.vpremium_gifts(); if (!gifts) { return result; } + const auto monthlyAmount = [&] { + const auto &min = ranges::min_element( + gifts->v, + ranges::less(), + [](const MTPPremiumGiftOption &o) { return o.data().vamount().v; } + )->data(); + return min.vamount().v / float64(min.vmonths().v); + }(); result.reserve(gifts->v.size()); for (const auto &gift : gifts->v) { - const auto &option = gift.match([](const MTPDpremiumGiftOption &d - ) -> const MTPDpremiumGiftOption & { - return d; - }); + const auto &option = gift.data(); const auto botUrl = qs(option.vbot_url()); const auto months = option.vmonths().v; const auto amount = option.vamount().v; const auto currency = qs(option.vcurrency()); - if (monthlyCurrency != currency) { - monthlyAmount = 500; // 5 USD. - } const auto discount = [&] { const auto percent = monthlyAmount * months / float64(amount) - 1.; @@ -76,7 +74,9 @@ GiftOptions GiftOptionFromTL( }(); auto info = Ui::Premium::GiftInfo{ .duration = Ui::FormatTTL(months * 86400 * 31), - .discount = QString::fromUtf8("\xe2\x88\x92%1%").arg(discount), + .discount = discount + ? QString::fromUtf8("\xe2\x88\x92%1%").arg(discount) + : QString(), .perMonth = tr::lng_premium_gift_per( tr::now, lt_cost, @@ -354,7 +354,6 @@ void GiftPremiumValidator::showBox(not_null user) { if (_requestId) { return; } - _controller->session().api().premium().reload(); _requestId = _api.request(MTPusers_GetFullUser( user->inputUser )).done([=](const MTPusers_UserFull &result) { @@ -368,10 +367,7 @@ void GiftPremiumValidator::showBox(not_null user) { _controller->session().data().processChats(result.data().vchats()); const auto &fullUser = result.data().vfull_user().data(); - auto options = GiftOptionFromTL( - fullUser, - _controller->session().api().premium().monthlyAmount(), - _controller->session().api().premium().monthlyCurrency()); + auto options = GiftOptionFromTL(fullUser); if (!options.empty()) { _controller->show( Box(GiftBox, _controller, user, std::move(options))); diff --git a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp index c8de47fe0..b58d227a6 100644 --- a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp +++ b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp @@ -1005,7 +1005,9 @@ void AddGiftOptions( const auto discountFont = st::windowFiltersButton.badgeStyle.font; const auto discountWidth = discountFont->width(info.discount); - const auto &discountMargins = st::premiumGiftRowBadgeMargins; + const auto &discountMargins = discountWidth + ? st::premiumGiftRowBadgeMargins + : style::margins(); const auto discountRect = QRect( left, halfHeight + discountMargins.top(),