From 639a82ce28250e905ae76c40678e048173536564 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 9 Nov 2023 23:03:17 +0400 Subject: [PATCH] Add confirmation for prepared giveaway start. --- Telegram/Resources/langs/lang.strings | 1 + Telegram/SourceFiles/api/api_statistics.cpp | 5 ++--- .../boxes/peers/replace_boost_box.cpp | 2 +- .../info/boosts/create_giveaway_box.cpp | 22 ++++++++++++++++++- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 4edc3388b..39c744769 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2116,6 +2116,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_giveaway_users_about" = "Choose if you want to limit the giveaway only to those who joined the channel after the giveaway started or to users from specific countries."; "lng_giveaway_start" = "Start Giveaway"; "lng_giveaway_award" = "Gift Premium"; +"lng_giveaway_start_sure" = "Are you sure you want to start this prepaid giveaway now? This action cannot be undone."; "lng_giveaway_date_title" = "Date when giveaway ends"; "lng_giveaway_date" = "Date and Time"; "lng_giveaway_date_about#one" = "Choose when {count} subscriber of your channel will be randomly selected to receive Telegram Premium."; diff --git a/Telegram/SourceFiles/api/api_statistics.cpp b/Telegram/SourceFiles/api/api_statistics.cpp index 466094d44..383d0973c 100644 --- a/Telegram/SourceFiles/api/api_statistics.cpp +++ b/Telegram/SourceFiles/api/api_statistics.cpp @@ -518,10 +518,9 @@ rpl::producer Boosts::request() { ? (100. * premiumMemberCount / participantCount) : 0; + const auto slots = data.vmy_boost_slots(); _boostStatus.overview = Data::BoostsOverview{ - .mine = (data.vmy_boost_slots() - ? data.vmy_boost_slots()->v.size() - : 0), + .mine = slots ? int(slots->v.size()) : 0, .level = std::max(data.vlevel().v, 0), .boostCount = std::max( data.vboosts().v, diff --git a/Telegram/SourceFiles/boxes/peers/replace_boost_box.cpp b/Telegram/SourceFiles/boxes/peers/replace_boost_box.cpp index c629fe948..0129b8596 100644 --- a/Telegram/SourceFiles/boxes/peers/replace_boost_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/replace_boost_box.cpp @@ -413,7 +413,7 @@ Ui::BoostCounters ParseBoostCounters( .boosts = data.vboosts().v, .thisLevelBoosts = data.vcurrent_level_boosts().v, .nextLevelBoosts = data.vnext_level_boosts().value_or_empty(), - .mine = slots ? slots->v.size() : 0, + .mine = slots ? int(slots->v.size()) : 0, }; } diff --git a/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp b/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp index 87d8ead06..235e2f130 100644 --- a/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp +++ b/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_common.h" #include "settings/settings_premium.h" // Settings::ShowPremium #include "ui/boxes/choose_date_time.h" +#include "ui/boxes/confirm_box.h" #include "ui/effects/premium_graphics.h" #include "ui/effects/premium_top_bar.h" #include "ui/layers/generic_box.h" @@ -908,18 +909,37 @@ void CreateGiveawayBox( state->confirmButtonBusy = false; } }; - if (prepaid) { + const auto startPrepaid = [=](Fn close) { + if (!weak) { + close(); + return; + } state->apiOptions.applyPrepaid( invoice, prepaid->id ) | rpl::start_with_error_done([=](const QString &error) { if (const auto window = weakWindow.get()) { window->uiShow()->showToast(error); + close(); done(Payments::CheckoutResult::Cancelled); } }, [=] { + close(); done(Payments::CheckoutResult::Paid); }, box->lifetime()); + }; + if (prepaid) { + const auto cancel = [=](Fn close) { + if (weak) { + state->confirmButtonBusy = false; + } + close(); + }; + show->show(Ui::MakeConfirmBox({ + .text = tr::lng_giveaway_start_sure(tr::now), + .confirmed = startPrepaid, + .cancelled = cancel, + })); } else { Payments::CheckoutProcess::Start(std::move(invoice), done); }