From 0df3be8630dba80f0025ba19669f853caf7f658f Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 5 Dec 2025 18:57:52 +0400 Subject: [PATCH] Use better ratio stars/usd/ton. --- Telegram/SourceFiles/boxes/star_gift_box.cpp | 8 +++---- .../SourceFiles/boxes/transfer_gift_box.cpp | 24 +++++++++---------- .../controls/history_view_suggest_options.cpp | 4 ++-- Telegram/SourceFiles/main/main_app_config.cpp | 8 +++++++ Telegram/SourceFiles/main/main_app_config.h | 2 ++ 5 files changed, 27 insertions(+), 19 deletions(-) diff --git a/Telegram/SourceFiles/boxes/star_gift_box.cpp b/Telegram/SourceFiles/boxes/star_gift_box.cpp index cdf4418e57..dab64bf0c8 100644 --- a/Telegram/SourceFiles/boxes/star_gift_box.cpp +++ b/Telegram/SourceFiles/boxes/star_gift_box.cpp @@ -4772,8 +4772,8 @@ CreditsAmount StarsFromTon( not_null session, CreditsAmount ton) { const auto appConfig = &session->appConfig(); - const auto starsRate = appConfig->starsWithdrawRate() / 100.; - const auto tonRate = appConfig->currencyWithdrawRate(); + const auto starsRate = appConfig->starsSellRate() / 100.; + const auto tonRate = appConfig->currencySellRate(); if (!starsRate) { return {}; } @@ -4785,8 +4785,8 @@ CreditsAmount TonFromStars( not_null session, CreditsAmount stars) { const auto appConfig = &session->appConfig(); - const auto starsRate = appConfig->starsWithdrawRate() / 100.; - const auto tonRate = appConfig->currencyWithdrawRate(); + const auto starsRate = appConfig->starsSellRate() / 100.; + const auto tonRate = appConfig->currencySellRate(); if (!tonRate) { return {}; } diff --git a/Telegram/SourceFiles/boxes/transfer_gift_box.cpp b/Telegram/SourceFiles/boxes/transfer_gift_box.cpp index 963d9bc0c4..b8130f7f4c 100644 --- a/Telegram/SourceFiles/boxes/transfer_gift_box.cpp +++ b/Telegram/SourceFiles/boxes/transfer_gift_box.cpp @@ -726,15 +726,6 @@ void ShowGiftSaleAcceptBox( const auto nanoTonThousandths = appConfig.giftResaleNanoTonThousandths(); controller->show(Box([=](not_null box) { - auto button = tr::lng_gift_offer_sell_for( - lt_price, - rpl::single(Ui::Text::IconEmoji( - &st::starIconEmoji - ).append(Lang::FormatCreditsAmountDecimal( - price - ))), - tr::marked); - struct State { bool sent = false; }; @@ -763,6 +754,14 @@ void ShowGiftSaleAcceptBox( ? ((price.value() * nanoTonThousandths) / 1000.) : ((int64(price.value()) * starsThousandths) / 1000); + auto button = tr::lng_gift_offer_sell_for( + lt_price, + rpl::single(Ui::Text::IconEmoji(price.ton() + ? &st::buttonTonIconEmoji + : &st::buttonStarIconEmoji + ).append(Lang::FormatExactCountDecimal(receive))), + tr::marked); + box->addRow( CreateGiftTransfer(box->verticalLayout(), gift, peer), QMargins(0, st::boxPadding.top(), 0, 0)); @@ -807,8 +806,8 @@ void ShowGiftSaleAcceptBox( / std::pow(10., rule.exponent); if (std::abs(value) >= 0.01) { const auto rate = price.ton() - ? appConfig->currencyWithdrawRate() - : (appConfig->starsWithdrawRate() / 100.); + ? appConfig->currencySellRate() + : (appConfig->starsSellRate() / 100.); const auto offered = receive * rate; const auto diff = offered - value; const auto percent = std::abs(diff / value * 100.); @@ -826,8 +825,7 @@ void ShowGiftSaleAcceptBox( lt_percent, rpl::single(tr::bold(percentText)), lt_name, - rpl::single(tr::marked( - UniqueGiftName(*gift))), + rpl::single(tr::marked(gift->title)), tr::marked), (good ? st::offerValueGood : st::offerValueBad)), st::boxRowPadding + st::offerValuePadding diff --git a/Telegram/SourceFiles/history/view/controls/history_view_suggest_options.cpp b/Telegram/SourceFiles/history/view/controls/history_view_suggest_options.cpp index 9d23bff065..051a6705dd 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_suggest_options.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_suggest_options.cpp @@ -133,8 +133,8 @@ void AddApproximateUsd( } const auto appConfig = &session->appConfig(); const auto rate = amount.ton() - ? appConfig->currencyWithdrawRate() - : (appConfig->starsWithdrawRate() / 100.); + ? appConfig->currencySellRate() + : (appConfig->starsSellRate() / 100.); return Info::ChannelEarn::ToUsd(amount, rate, 2); }); const auto usd = Ui::CreateChild( diff --git a/Telegram/SourceFiles/main/main_app_config.cpp b/Telegram/SourceFiles/main/main_app_config.cpp index 367f7579ab..02deb2d55a 100644 --- a/Telegram/SourceFiles/main/main_app_config.cpp +++ b/Telegram/SourceFiles/main/main_app_config.cpp @@ -102,6 +102,14 @@ float64 AppConfig::currencyWithdrawRate() const { return get(u"ton_usd_rate"_q, 1); } +float64 AppConfig::starsSellRate() const { + return get(u"stars_usd_sell_rate_x1000"_q, 1410) / 1000.; +} + +float64 AppConfig::currencySellRate() const { + return get(u"ton_usd_rate"_q, 1); +} + bool AppConfig::paidMessagesAvailable() const { return get(u"stars_paid_messages_available"_q, false); } diff --git a/Telegram/SourceFiles/main/main_app_config.h b/Telegram/SourceFiles/main/main_app_config.h index 0f159f02ab..500d8f57f6 100644 --- a/Telegram/SourceFiles/main/main_app_config.h +++ b/Telegram/SourceFiles/main/main_app_config.h @@ -77,6 +77,8 @@ public: [[nodiscard]] int starsWithdrawMax() const; [[nodiscard]] float64 starsWithdrawRate() const; [[nodiscard]] float64 currencyWithdrawRate() const; + [[nodiscard]] float64 starsSellRate() const; + [[nodiscard]] float64 currencySellRate() const; [[nodiscard]] bool paidMessagesAvailable() const; [[nodiscard]] int paidMessageStarsMax() const; [[nodiscard]] int paidMessageCommission() const;