From 0d346610a2f535d9edd8df1a2c52f04e3203802a Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 20 Mar 2025 10:35:15 +0300 Subject: [PATCH] Fixed sort of received star gifts. --- Telegram/SourceFiles/api/api_premium.cpp | 1 + Telegram/SourceFiles/boxes/star_gift_box.cpp | 15 ++------------- Telegram/SourceFiles/data/data_star_gift.h | 1 + 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Telegram/SourceFiles/api/api_premium.cpp b/Telegram/SourceFiles/api/api_premium.cpp index d7dbcd37f1..61769069fa 100644 --- a/Telegram/SourceFiles/api/api_premium.cpp +++ b/Telegram/SourceFiles/api/api_premium.cpp @@ -816,6 +816,7 @@ std::optional FromTL( .lastSaleDate = data.vlast_sale_date().value_or_empty(), .upgradable = data.vupgrade_stars().has_value(), .birthday = data.is_birthday(), + .soldOut = data.is_sold_out(), }); }, [&](const MTPDstarGiftUnique &data) { const auto total = data.vavailability_total().v; diff --git a/Telegram/SourceFiles/boxes/star_gift_box.cpp b/Telegram/SourceFiles/boxes/star_gift_box.cpp index bc15e90593..cb3fdf2520 100644 --- a/Telegram/SourceFiles/boxes/star_gift_box.cpp +++ b/Telegram/SourceFiles/boxes/star_gift_box.cpp @@ -718,19 +718,8 @@ void PreviewWrap::paintEvent(QPaintEvent *e) { for (auto &gift : gifts) { list.push_back({ .info = gift }); } - ranges::sort(list, []( - const GiftTypeStars &a, - const GiftTypeStars &b) { - if (!a.info.limitedCount && !b.info.limitedCount) { - return a.info.stars <= b.info.stars; - } else if (!a.info.limitedCount) { - return true; - } else if (!b.info.limitedCount) { - return false; - } else if (a.info.limitedLeft != b.info.limitedLeft) { - return a.info.limitedLeft > b.info.limitedLeft; - } - return a.info.stars <= b.info.stars; + ranges::stable_sort(list, [](const auto &a, const auto &b) { + return a.info.soldOut < b.info.soldOut; }); auto &map = Map[session]; diff --git a/Telegram/SourceFiles/data/data_star_gift.h b/Telegram/SourceFiles/data/data_star_gift.h index 1b9a8ca063..c529be692e 100644 --- a/Telegram/SourceFiles/data/data_star_gift.h +++ b/Telegram/SourceFiles/data/data_star_gift.h @@ -69,6 +69,7 @@ struct StarGift { TimeId lastSaleDate = 0; bool upgradable = false; bool birthday = false; + bool soldOut = false; friend inline bool operator==( const StarGift &,