diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 650c26784..34ba3020c 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -4057,4 +4057,5 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ayu_IDCopiedToast" = "ID copied to clipboard."; "ayu_ContextHideMessage" = "Hide"; "ayu_ContextCopyCallbackData" = "Copy Callback Data"; +"ayu_LocalPremiumNotice" = "You're using **local** Telegram Premium.\nIt **won't** give you any benefits, except translator.\n**Enjoy the star near your nickname!**"; "ayu_SettingsWatermark" = "AyuGram developed and maintained by Radolyn Labs."; diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index 2ae42c465..511ca5795 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -219,6 +219,11 @@ namespace AyuSettings disableStories = val; } + void AyuGramSettings::set_localPremium(bool val) + { + localPremium = val; + } + void AyuGramSettings::set_deletedMark(QString val) { deletedMark = std::move(val); diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index 403e734e0..41641b68b 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -36,6 +36,7 @@ namespace AyuSettings // ~ QoL toggles disableAds = true; disableStories = false; + localPremium = false; copyUsernameAsLink = true; // ~ Customization @@ -71,6 +72,7 @@ namespace AyuSettings bool saveMessagesHistory; bool disableAds; bool disableStories; + bool localPremium; bool copyUsernameAsLink; QString deletedMark; QString editedMark; @@ -108,6 +110,8 @@ namespace AyuSettings void set_disableStories(bool val); + void set_localPremium(bool val); + void set_copyUsernameAsLink(bool val); void set_deletedMark(QString val); @@ -144,6 +148,7 @@ namespace AyuSettings saveMessagesHistory, disableAds, disableStories, + localPremium, copyUsernameAsLink, deletedMark, editedMark, @@ -173,4 +178,4 @@ namespace AyuSettings bool get_ghostModeEnabled(); rpl::producer get_ghostModeEnabledReactive(); -} \ No newline at end of file +} diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp index b25fa3e06..266b27876 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp @@ -503,6 +503,22 @@ namespace Settings AyuSettings::save(); }, container->lifetime()); + AddButton( + container, + tr::ayu_LocalPremium(), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->localPremium) + )->toggledValue( + ) | rpl::filter([=](bool enabled) + { + return (enabled != settings->localPremium); + }) | start_with_next([=](bool enabled) + { + settings->set_localPremium(enabled); + AyuSettings::save(); + }, container->lifetime()); + AddButton( container, tr::ayu_DisableStories(), diff --git a/Telegram/SourceFiles/data/data_peer_values.cpp b/Telegram/SourceFiles/data/data_peer_values.cpp index 1670afa8f..5b1c073be 100644 --- a/Telegram/SourceFiles/data/data_peer_values.cpp +++ b/Telegram/SourceFiles/data/data_peer_values.cpp @@ -21,6 +21,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/image/image_prepare.h" #include "base/unixtime.h" +// AyuGram includes +#include "ayu/ayu_settings.h" + + namespace Data { namespace { @@ -377,6 +381,11 @@ rpl::producer PeerPremiumValue(not_null peer) { } rpl::producer AmPremiumValue(not_null session) { + auto settings = &AyuSettings::getInstance(); + if (settings->localPremium) { + return rpl::single(true); + } + return PeerPremiumValue(session->user()); } diff --git a/Telegram/SourceFiles/data/data_user.cpp b/Telegram/SourceFiles/data/data_user.cpp index 09c66a922..6b0751616 100644 --- a/Telegram/SourceFiles/data/data_user.cpp +++ b/Telegram/SourceFiles/data/data_user.cpp @@ -26,6 +26,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "styles/style_chat.h" +// AyuGram includes +#include "ayu/ayu_settings.h" +#include "ayu/sync/utils/telegram_helpers.h" + + namespace { // User with hidden last seen stays online in UI for such amount of seconds. @@ -341,6 +346,18 @@ bool UserData::isFake() const { } bool UserData::isPremium() const { + if (id) { + auto settings = &AyuSettings::getInstance(); + if (settings->localPremium) + { + if (getSession(id.value)) + { + return true; + } + } + } + + return flags() & UserDataFlag::Premium; } diff --git a/Telegram/SourceFiles/main/main_session.cpp b/Telegram/SourceFiles/main/main_session.cpp index a235f729f..153e8040d 100644 --- a/Telegram/SourceFiles/main/main_session.cpp +++ b/Telegram/SourceFiles/main/main_session.cpp @@ -50,6 +50,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "chat_helpers/spellchecker_common.h" #endif // TDESKTOP_DISABLE_SPELLCHECK +// AyuGram includes +#include "ayu/ayu_settings.h" + + namespace Main { namespace { @@ -237,10 +241,20 @@ rpl::producer<> Session::downloaderTaskFinished() const { } bool Session::premium() const { + auto settings = &AyuSettings::getInstance(); + if (settings->localPremium) { + return true; + } + return _user->isPremium(); } bool Session::premiumPossible() const { + auto settings = &AyuSettings::getInstance(); + if (settings->localPremium) { + return true; + } + return premium() || _premiumPossible.current(); } @@ -257,6 +271,12 @@ rpl::producer Session::premiumPossibleValue() const { }) | rpl::map([=] { return _user->isPremium(); }); + + auto settings = &AyuSettings::getInstance(); + if (settings->localPremium) { + premium = rpl::single(true); + } + return rpl::combine( std::move(premium), _premiumPossible.value(), diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp index 2b359b984..773aa2e12 100644 --- a/Telegram/SourceFiles/settings/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -62,6 +62,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_layers.h" #include "styles/style_settings.h" +// AyuGram includes +#include "ayu/ayu_settings.h" + + namespace Settings { namespace { @@ -1478,6 +1482,13 @@ QPointer Premium::createPinnedToTop( Ui::Text::RichLangValue); } } + + auto settings = &AyuSettings::getInstance(); + if (settings->localPremium) + { + return tr::ayu_LocalPremiumNotice(Ui::Text::RichLangValue); + } + return rpl::conditional( Data::AmPremiumValue(&_controller->session()), _controller->session().api().premium().statusTextValue(),