Show premium page on limit increase decision.

This commit is contained in:
John Preston 2022-05-20 17:12:56 +04:00
parent dc444ec22b
commit 5cd065ef6b
10 changed files with 42 additions and 24 deletions

View File

@ -82,6 +82,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/chat/attach/attach_prepare.h"
#include "ui/toasts/common_toasts.h"
#include "support/support_helper.h"
#include "settings/settings_premium.h"
#include "storage/localimageloader.h"
#include "storage/download_manager_mtproto.h"
#include "storage/file_upload.h"
@ -452,10 +453,7 @@ void ApiWrap::sendMessageFail(
: tr::lng_error_noforwards_group(tr::now)
}, .duration = kJoinErrorDuration });
} else if (error.type() == qstr("PREMIUM_ACCOUNT_REQUIRED")) {
Ui::ShowMultilineToast({
.text = { u"Premium sticker."_q },
.duration = kJoinErrorDuration,
});
Settings::ShowPremium(&session());
}
if (const auto item = _session->data().message(itemId)) {
Assert(randomId != 0);

View File

@ -1082,7 +1082,7 @@ premiumBubblePadding: margins(14px, 0px, 14px, 0px);
premiumBubbleHeight: 40px;
premiumBubbleSkip: 5px;
premiumBubbleTextSkip: 3px;
premiumBubbleSlideDuration: 500;
premiumBubbleSlideDuration: 1000;
premiumBubbleTailSize: size(21px, 7px);
premiumBubbleFont: font(19px);
premiumLineTextSkip: 11px;

View File

@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_session.h"
#include "lang/lang_keys.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "base/unixtime.h"
#include "apiwrap.h"
#include "styles/style_boxes.h"
@ -432,9 +433,7 @@ void SimpleLimitBox(
});
} else {
box->addButton(tr::lng_limits_increase(), [=] {
Ui::ShowMultilineToast({
.text = { u"Premium!"_q },
});
Settings::ShowPremium(session);
});
}
@ -565,9 +564,7 @@ void ChannelsLimitBox(
});
} else {
box->addButton(tr::lng_limits_increase(), [=] {
Ui::ShowMultilineToast({
.text = { u"Premium!"_q },
});
Settings::ShowPremium(session);
});
}
}, box->lifetime());

View File

@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lottie/lottie_icon.h"
#include "main/main_session.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "ui/chat/chat_style.h"
#include "ui/chat/chat_theme.h"
#include "ui/effects/scroll_content_shadow.h"
@ -447,9 +448,7 @@ void ReactionsSettingsBox(
button->setClickedCallback([=, emoji = r.emoji] {
if (premium && !controller->session().user()->isPremium()) {
Ui::ShowMultilineToast({
.text = { u"Premium reaction."_q },
});
Settings::ShowPremium(&controller->session());
return;
}
checkButton(button);

View File

@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/buttons.h"
#include "ui/widgets/gradient_round_button.h"
#include "ui/wrap/padding_wrap.h"
#include "settings/settings_premium.h"
#include "lottie/lottie_single_player.h"
#include "history/view/media/history_view_sticker.h"
#include "window/window_session_controller.h"
@ -204,7 +205,7 @@ void StickerBox(
const auto width = size - buttonPadding.left() - buttonPadding.right();
auto button = CreateUnlockButton(box, width);
button->setClickedCallback([=] {
controller->showSettings();
controller->showSettings(Settings::PremiumId());
});
box->addButton(std::move(button));
}

View File

@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/history_item_components.h"
#include "apiwrap.h"
#include "storage/storage_account.h"
#include "settings/settings_premium.h"
#include "core/application.h"
#include "core/core_settings.h"
#include "main/main_session.h"
@ -98,10 +99,7 @@ void MaybeShowPremiumToast(
const auto widget = QPointer<Ui::RpWidget>(
controller->window().widget()->bodyWidget());
const auto filter = [=](const auto ...) {
Ui::ShowMultilineToast({
.parentOverride = widget,
.text = { u"Premium!"_q },
});
controller->showSettings(Settings::PremiumId());
return false;
};
Ui::ShowMultilineToast({

View File

@ -9,6 +9,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "core/application.h"
#include "ui/abstract_button.h"
#include "ui/effects/gradient.h"
#include "ui/text/text_utilities.h"
@ -17,6 +19,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/wrap/padding_wrap.h"
#include "ui/wrap/vertical_layout.h"
#include "window/window_session_controller.h"
#include "window/window_controller.h"
#include "main/main_session.h"
#include "styles/style_boxes.h"
#include "styles/style_chat_helpers.h"
#include "styles/style_layers.h"
@ -251,4 +255,20 @@ Type PremiumId() {
return Premium::Id();
}
void ShowPremium(not_null<Main::Session*> session) {
const auto active = Core::App().activeWindow();
const auto controller = (active && active->isPrimary())
? active->sessionController()
: nullptr;
if (controller && session == &controller->session()) {
controller->showSettings(Settings::PremiumId());
} else {
for (const auto &controller : session->windows()) {
if (controller->window().isPrimary()) {
controller->showSettings(Settings::PremiumId());
}
}
}
}
} // namespace Settings

View File

@ -9,9 +9,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/settings_type.h"
namespace Main {
class Session;
} // namespace Main
namespace Settings {
Type PremiumId();
[[nodiscard]] Type PremiumId();
void ShowPremium(not_null<::Main::Session*> session);
} // namespace Settings

View File

@ -303,7 +303,7 @@ BubbleWidget::BubbleWidget(
0.,
1.,
st::premiumBubbleSlideDuration,
anim::easeOutCubic);
anim::easeOutCirc);
}, lifetime());
}

View File

@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_cloud_themes.h"
#include "data/data_message_reactions.h"
#include "history/history_item.h"
#include "settings/settings_premium.h"
#include "main/main_session.h"
#include "window/section_memento.h"
#include "window/window_slide_animation.h"
@ -353,9 +354,7 @@ bool ShowReactPremiumError(
if (i == end(list) || !i->premium) {
return false;
}
Ui::ShowMultilineToast({
.text = { u"Premium reaction."_q },
});
Settings::ShowPremium(&controller->session());
return true;
}