From 33cf9a0702bc88607f670d9da285e6fa5840071c Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 8 Nov 2023 23:54:52 +0300 Subject: [PATCH] Fixed expiration date of boosts in boosts list. --- Telegram/SourceFiles/api/api_statistics.cpp | 4 +++- Telegram/SourceFiles/data/data_boosts.h | 3 ++- .../SourceFiles/info/boosts/info_boosts_inner_widget.cpp | 8 ++------ .../info/statistics/info_statistics_list_controllers.cpp | 9 +++------ 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/Telegram/SourceFiles/api/api_statistics.cpp b/Telegram/SourceFiles/api/api_statistics.cpp index c5fb3ca76..9f2dd2cd3 100644 --- a/Telegram/SourceFiles/api/api_statistics.cpp +++ b/Telegram/SourceFiles/api/api_statistics.cpp @@ -587,6 +587,7 @@ void Boosts::requestBoosts( auto list = std::vector(); list.reserve(data.vboosts().v.size()); + constexpr auto kMonthsDivider = int(30 * 86400); for (const auto &boost : data.vboosts().v) { const auto &data = boost.data(); const auto path = data.vused_gift_slug() @@ -609,7 +610,8 @@ void Boosts::requestBoosts( ? FullMsgId{ _peer->id, data.vgiveaway_msg_id()->v } : FullMsgId(), QDateTime::fromSecsSinceEpoch(data.vdate().v), - data.vexpires().v, + QDateTime::fromSecsSinceEpoch(data.vexpires().v), + (data.vexpires().v - data.vdate().v) / kMonthsDivider, std::move(giftCodeLink), data.vmultiplier().value_or_empty(), }); diff --git a/Telegram/SourceFiles/data/data_boosts.h b/Telegram/SourceFiles/data/data_boosts.h index 0dad4b008..08fac640b 100644 --- a/Telegram/SourceFiles/data/data_boosts.h +++ b/Telegram/SourceFiles/data/data_boosts.h @@ -34,7 +34,8 @@ struct Boost final { UserId userId = UserId(0); FullMsgId giveawayMessage; QDateTime date; - crl::time expiresAt = 0; + QDateTime expiresAt; + int expiresAfterMonths = 0; GiftCodeLink giftCodeLink; int multiplier = 0; }; diff --git a/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp b/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp index 2e6ff51f8..e4abe223f 100644 --- a/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp +++ b/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp @@ -365,15 +365,11 @@ void InnerWidget::fill() { } else if (boost.userId) { const auto user = _peer->owner().user(boost.userId); if (boost.isGift || boost.isGiveaway) { - constexpr auto kMonthsDivider = int(30 * 86400); - const auto date = TimeId(boost.date.toSecsSinceEpoch()); - const auto months = (boost.expiresAt - date) - / kMonthsDivider; const auto d = Api::GiftCode{ .from = _peer->id, .to = user->id, - .date = date, - .months = int(months), + .date = TimeId(boost.date.toSecsSinceEpoch()), + .months = boost.expiresAfterMonths, }; _show->showBox(Box(GiftCodePendingBox, _controller, d)); } else { diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp b/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp index 7dd49517b..0f2e93cd4 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp +++ b/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp @@ -391,19 +391,16 @@ BoostRow::BoostRow(const Data::Boost &boost) void BoostRow::init() { invalidateBadges(); - constexpr auto kMonthsDivider = int(30 * 86400); - const auto months = (_boost.expiresAt - _boost.date.toSecsSinceEpoch()) - / kMonthsDivider; auto status = !PeerListRow::special() ? tr::lng_boosts_list_status( tr::now, lt_date, - langDateTime(_boost.date)) - : tr::lng_months_tiny(tr::now, lt_count, months) + langDayOfMonth(_boost.expiresAt.date())) + : tr::lng_months_tiny(tr::now, lt_count, _boost.expiresAfterMonths) + ' ' + QChar(0x2022) + ' ' - + langDateTime(_boost.date); + + langDayOfMonth(_boost.date.date()); PeerListRow::setCustomStatus(std::move(status)); }