Don't shows premium section / preview if unavailable.

This commit is contained in:
John Preston 2022-06-08 11:26:53 +04:00
parent 86889cf1ef
commit 524771529a
5 changed files with 29 additions and 1 deletions

View File

@ -1705,6 +1705,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_premium_summary_agree" = "By purchasing a Premium subscription, you agree to {terms} and {policy}.";
"lng_premium_success" = "You've successfully subscribed to Telegram Premium!";
"lng_premium_unavailable" = "This feature requires subscription to **Telegram Premium**.\n\nUnfortunately, **Telegram Premium** is not available in your region.";
"lng_accounts_limit_title" = "Limit Reached";
"lng_accounts_limit1#one" = "You have reached the limit of **{count}** connected accounts.";

View File

@ -22,9 +22,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/effects/path_shift_gradient.h"
#include "ui/effects/premium_graphics.h"
#include "ui/text/text.h"
#include "ui/text/text_utilities.h"
#include "ui/widgets/buttons.h"
#include "ui/widgets/gradient_round_button.h"
#include "ui/wrap/padding_wrap.h"
#include "ui/boxes/confirm_box.h"
#include "settings/settings_premium.h"
#include "lottie/lottie_single_player.h"
#include "history/view/media/history_view_sticker.h"
@ -743,6 +745,10 @@ void Show(not_null<Window::SessionController*> controller, QImage back) {
void Show(
not_null<Window::SessionController*> controller,
Descriptor &&descriptor) {
if (!controller->session().premiumPossible()) {
controller->show(Box(PremiumUnavailableBox));
return;
}
auto &list = Preloads();
for (auto i = begin(list); i != end(list);) {
const auto already = i->controller.get();
@ -830,3 +836,12 @@ void ShowPremiumPreviewBox(
.disabled = disabled,
});
}
void PremiumUnavailableBox(not_null<Ui::GenericBox*> box) {
Ui::ConfirmBox(box, {
.text = tr::lng_premium_unavailable(
tr::now,
Ui::Text::RichLangValue),
.inform = true,
});
}

View File

@ -9,6 +9,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
class DocumentData;
namespace Ui {
class GenericBox;
} // namespace Ui
namespace Window {
class SessionController;
} // namespace Window
@ -32,3 +36,5 @@ void ShowPremiumPreviewBox(
not_null<Window::SessionController*> controller,
PremiumPreview section,
const base::flat_map<QString, ReactionDisableType> &disabled = {});
void PremiumUnavailableBox(not_null<Ui::GenericBox*> box);

View File

@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "info/settings/info_settings_widget.h" // SectionCustomTopBarData.
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "boxes/premium_preview_box.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "ui/abstract_button.h"
@ -23,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/effects/premium_graphics.h"
#include "ui/text/text_utilities.h"
#include "ui/text/format_values.h"
#include "ui/layers/generic_box.h"
#include "ui/widgets/gradient_round_button.h"
#include "ui/widgets/labels.h"
#include "ui/wrap/fade_wrap.h"
@ -993,6 +995,10 @@ void ShowPremium(not_null<Main::Session*> session, const QString &ref) {
void ShowPremium(
not_null<Window::SessionController*> controller,
const QString &ref) {
if (!controller->session().premiumPossible()) {
controller->show(Box(PremiumUnavailableBox));
return;
}
controller->setPremiumRef(ref);
controller->showSettings(Settings::PremiumId());
}

View File

@ -336,7 +336,7 @@ bool ShowSendPremiumError(
not_null<SessionController*> controller,
not_null<DocumentData*> document) {
if (!document->isPremiumSticker()
|| document->session().user()->isPremium()) {
|| document->session().premium()) {
return false;
}
ShowStickerPreviewBox(controller, document);