Added warning to channel earn section when user has no cloud password.

This commit is contained in:
23rd 2024-06-24 05:52:34 +03:00 committed by John Preston
parent 0fc2df8eec
commit 54d0290ba2
2 changed files with 45 additions and 14 deletions

View file

@ -5218,6 +5218,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_channel_earn_chart_overriden_detail_usd" = "Revenue in USD"; "lng_channel_earn_chart_overriden_detail_usd" = "Revenue in USD";
"lng_channel_earn_currency_history" = "TON Transactions"; "lng_channel_earn_currency_history" = "TON Transactions";
"lng_channel_earn_credits_history" = "Stars Transactions"; "lng_channel_earn_credits_history" = "Stars Transactions";
"lng_channel_earn_out_check_password_about" = "You can withdraw only if you have:";
"lng_bot_earn_title" = "Stars Balance"; "lng_bot_earn_title" = "Stars Balance";
"lng_bot_earn_chart_revenue" = "Revenue"; "lng_bot_earn_chart_revenue" = "Revenue";

View file

@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_cloud_password.h" #include "api/api_cloud_password.h"
#include "apiwrap.h" #include "apiwrap.h"
#include "ui/layers/generic_box.h"
#include "boxes/passcode_box.h" #include "boxes/passcode_box.h"
#include "data/data_channel.h" #include "data/data_channel.h"
#include "data/data_session.h" #include "data/data_session.h"
@ -50,8 +51,11 @@ void HandleWithdrawalButton(
const auto state = button->lifetime().make_state<State>(); const auto state = button->lifetime().make_state<State>();
const auto session = (channel ? &channel->session() : &peer->session()); const auto session = (channel ? &channel->session() : &peer->session());
using ChannelOutUrl = MTPstats_BroadcastRevenueWithdrawalUrl;
using CreditsOutUrl = MTPpayments_StarsRevenueWithdrawalUrl;
session->api().cloudPassword().reload(); session->api().cloudPassword().reload();
button->setClickedCallback([=] { const auto processOut = [=] {
if (state->loading) { if (state->loading) {
return; return;
} }
@ -84,37 +88,63 @@ void HandleWithdrawalButton(
} }
} }
}; };
const auto fail = [=](const QString &error) { const auto fail = [=](const MTP::Error &error) {
show->showToast(error); show->showToast(error.type());
}; };
if (channel) { if (channel) {
session->api().request( session->api().request(
MTPstats_GetBroadcastRevenueWithdrawalUrl( MTPstats_GetBroadcastRevenueWithdrawalUrl(
channel->inputChannel, channel->inputChannel,
result.result result.result
)).done([=]( )).done([=](const ChannelOutUrl &r) {
const MTPstats_BroadcastRevenueWithdrawalUrl &r) {
done(qs(r.data().vurl())); done(qs(r.data().vurl()));
}).fail([=](const MTP::Error &error) { }).fail(fail).send();
fail(error.type());
}).send();
} else if (peer) { } else if (peer) {
session->api().request( session->api().request(
MTPpayments_GetStarsRevenueWithdrawalUrl( MTPpayments_GetStarsRevenueWithdrawalUrl(
peer->input, peer->input,
MTP_long(receiver.creditsAmount()), MTP_long(receiver.creditsAmount()),
result.result result.result
)).done([=]( )).done([=](const CreditsOutUrl &r) {
const MTPpayments_StarsRevenueWithdrawalUrl &r) {
done(qs(r.data().vurl())); done(qs(r.data().vurl()));
}).fail([=](const MTP::Error &error) { }).fail(fail).send();
fail(error.type());
}).send();
} }
}); });
show->show(Box<PasscodeBox>(session, fields)); show->show(Box<PasscodeBox>(session, fields));
}); });
};
button->setClickedCallback([=] {
if (state->loading) {
return;
}
const auto fail = [=](const MTP::Error &error) {
auto box = PrePasswordErrorBox(
error.type(),
session,
TextWithEntities{
tr::lng_channel_earn_out_check_password_about(tr::now),
});
if (box) {
show->show(std::move(box));
state->loading = false;
} else {
processOut();
}
};
if (channel) {
session->api().request(
MTPstats_GetBroadcastRevenueWithdrawalUrl(
channel->inputChannel,
MTP_inputCheckPasswordEmpty()
)).fail(fail).send();
} else if (peer) {
session->api().request(
MTPpayments_GetStarsRevenueWithdrawalUrl(
peer->input,
MTP_long(std::numeric_limits<int64_t>::max()),
MTP_inputCheckPasswordEmpty()
)).fail(fail).send();
}
}); });
} }