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_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_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_limit_title" = "Limit Reached";
"lng_accounts_limit1#one" = "You have reached the limit of **{count}** connected accounts."; "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/path_shift_gradient.h"
#include "ui/effects/premium_graphics.h" #include "ui/effects/premium_graphics.h"
#include "ui/text/text.h" #include "ui/text/text.h"
#include "ui/text/text_utilities.h"
#include "ui/widgets/buttons.h" #include "ui/widgets/buttons.h"
#include "ui/widgets/gradient_round_button.h" #include "ui/widgets/gradient_round_button.h"
#include "ui/wrap/padding_wrap.h" #include "ui/wrap/padding_wrap.h"
#include "ui/boxes/confirm_box.h"
#include "settings/settings_premium.h" #include "settings/settings_premium.h"
#include "lottie/lottie_single_player.h" #include "lottie/lottie_single_player.h"
#include "history/view/media/history_view_sticker.h" #include "history/view/media/history_view_sticker.h"
@ -743,6 +745,10 @@ void Show(not_null<Window::SessionController*> controller, QImage back) {
void Show( void Show(
not_null<Window::SessionController*> controller, not_null<Window::SessionController*> controller,
Descriptor &&descriptor) { Descriptor &&descriptor) {
if (!controller->session().premiumPossible()) {
controller->show(Box(PremiumUnavailableBox));
return;
}
auto &list = Preloads(); auto &list = Preloads();
for (auto i = begin(list); i != end(list);) { for (auto i = begin(list); i != end(list);) {
const auto already = i->controller.get(); const auto already = i->controller.get();
@ -830,3 +836,12 @@ void ShowPremiumPreviewBox(
.disabled = disabled, .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; class DocumentData;
namespace Ui {
class GenericBox;
} // namespace Ui
namespace Window { namespace Window {
class SessionController; class SessionController;
} // namespace Window } // namespace Window
@ -32,3 +36,5 @@ void ShowPremiumPreviewBox(
not_null<Window::SessionController*> controller, not_null<Window::SessionController*> controller,
PremiumPreview section, PremiumPreview section,
const base::flat_map<QString, ReactionDisableType> &disabled = {}); 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 "info/settings/info_settings_widget.h" // SectionCustomTopBarData.
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "boxes/premium_preview_box.h"
#include "settings/settings_common.h" #include "settings/settings_common.h"
#include "settings/settings_premium.h" #include "settings/settings_premium.h"
#include "ui/abstract_button.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/effects/premium_graphics.h"
#include "ui/text/text_utilities.h" #include "ui/text/text_utilities.h"
#include "ui/text/format_values.h" #include "ui/text/format_values.h"
#include "ui/layers/generic_box.h"
#include "ui/widgets/gradient_round_button.h" #include "ui/widgets/gradient_round_button.h"
#include "ui/widgets/labels.h" #include "ui/widgets/labels.h"
#include "ui/wrap/fade_wrap.h" #include "ui/wrap/fade_wrap.h"
@ -993,6 +995,10 @@ void ShowPremium(not_null<Main::Session*> session, const QString &ref) {
void ShowPremium( void ShowPremium(
not_null<Window::SessionController*> controller, not_null<Window::SessionController*> controller,
const QString &ref) { const QString &ref) {
if (!controller->session().premiumPossible()) {
controller->show(Box(PremiumUnavailableBox));
return;
}
controller->setPremiumRef(ref); controller->setPremiumRef(ref);
controller->showSettings(Settings::PremiumId()); controller->showSettings(Settings::PremiumId());
} }

View File

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