diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index b07f190e6..bed8ac2a8 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -3867,6 +3867,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ayu_EditedMarkText" = "Edited mark"; "ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle"; "ayu_CleanDatabase" = "Clean database"; +"ayu_WALMode" = "Enable WAL mode"; "ayu_CleanDatabaseNotification" = "AyuGram database cleaned"; "ayu_EnableGhostMode" = "Enable Ghost"; "ayu_DisableGhostMode" = "Disable Ghost"; @@ -3878,9 +3879,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ayu_ForwardsRestrictedInfoDeleted" = "Forwarding of deleted message is not supported."; "ayu_LikelyOfflineStatus" = "offline ?"; "ayu_GhostModeShortcut" = "Enter with Ghost"; -"ayu_SettingsWatermark" = "AyuGram developed and maintained by Radolyn Labs"; +"ayu_SettingsWatermark" = "AyuGram developed and maintained by Radolyn Labs."; +"ayu_SettingsCustomizationHint" = "After making changes to the \"Customization\" section, you must restart the application."; "ayu_SettingsShowID" = "Show peer ID"; "ayu_SettingsShowID_Hide" = "Hide"; +"ayu_SettingsShowMessageSeconds" = "Show message seconds"; "ayu_ContextCopyID" = "Copy ID"; "ayu_IDCopiedToast" = "ID copied to clipboard."; "ayu_DrawerGhostModeToggle" = "Ghost Mode"; diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index a02b625e3..10d6f4d99 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -9,21 +9,10 @@ namespace AyuSettings { rpl::variable sendReadPacketsReactive; rpl::variable sendOnlinePacketsReactive; - rpl::variable sendUploadProgressReactive; - - rpl::variable sendOfflinePacketAfterOnlineReactive; - rpl::variable markReadAfterSendReactive; - - rpl::variable useScheduledMessagesReactive; - - rpl::variable keepDeletedMessagesReactive; - rpl::variable keepMessagesHistoryReactive; rpl::variable deletedMarkReactive; rpl::variable editedMarkReactive; - rpl::variable showGhostToggleInDrawerReactive; rpl::variable showPeerIdReactive; - rpl::variable showMessageSecondsReactive; rpl::variable ghostModeEnabled; @@ -51,21 +40,10 @@ namespace AyuSettings { void postinitialize() { sendReadPacketsReactive = settings->sendReadPackets; sendOnlinePacketsReactive = settings->sendOnlinePackets; - sendUploadProgressReactive = settings->sendUploadProgress; - - sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline; - markReadAfterSendReactive = settings->markReadAfterSend; - - useScheduledMessagesReactive = settings->useScheduledMessages; - - keepDeletedMessagesReactive = settings->keepDeletedMessages; - keepMessagesHistoryReactive = settings->keepMessagesHistory; deletedMarkReactive = settings->deletedMark; editedMarkReactive = settings->editedMark; - showGhostToggleInDrawerReactive = settings->showGhostToggleInDrawer; showPeerIdReactive = settings->showPeerId; - showMessageSecondsReactive = settings->showMessageSeconds; ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets; } @@ -114,32 +92,30 @@ namespace AyuSettings { void AyuGramSettings::set_sendUploadProgress(bool val) { sendUploadProgress = val; - sendUploadProgressReactive = val; } void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) { sendOfflinePacketAfterOnline = val; - sendOfflinePacketAfterOnlineReactive = val; } void AyuGramSettings::set_markReadAfterSend(bool val) { markReadAfterSend = val; - markReadAfterSendReactive = val; } void AyuGramSettings::set_useScheduledMessages(bool val) { useScheduledMessages = val; - useScheduledMessagesReactive = val; } void AyuGramSettings::set_keepDeletedMessages(bool val) { keepDeletedMessages = val; - keepDeletedMessagesReactive = val; } void AyuGramSettings::set_keepMessagesHistory(bool val) { keepMessagesHistory = val; - keepMessagesHistoryReactive = val; + } + + void AyuGramSettings::set_enableAds(bool val) { + enableAds = val; } void AyuGramSettings::set_deletedMark(QString val) { @@ -154,7 +130,6 @@ namespace AyuSettings { void AyuGramSettings::set_showGhostToggleInDrawer(bool val) { showGhostToggleInDrawer = val; - showGhostToggleInDrawerReactive = val; } void AyuGramSettings::set_showPeerId(int val) { @@ -164,39 +139,6 @@ namespace AyuSettings { void AyuGramSettings::set_showMessageSeconds(bool val) { showMessageSeconds = val; - showMessageSecondsReactive = val; - } - - rpl::producer get_sendReadPacketsReactive() { - return sendReadPacketsReactive.value(); - } - - rpl::producer get_sendOnlinePacketsReactive() { - return sendOnlinePacketsReactive.value(); - } - - rpl::producer get_sendUploadProgressReactive() { - return sendUploadProgressReactive.value(); - } - - rpl::producer get_sendOfflinePacketAfterOnlineReactive() { - return sendOfflinePacketAfterOnlineReactive.value(); - } - - rpl::producer get_markReadAfterSend() { - return markReadAfterSendReactive.value(); - } - - rpl::producer get_useScheduledMessagesReactive() { - return useScheduledMessagesReactive.value(); - } - - rpl::producer get_keepDeletedMessagesReactive() { - return keepDeletedMessagesReactive.value(); - } - - rpl::producer get_keepMessagesHistoryReactive() { - return keepMessagesHistoryReactive.value(); } rpl::producer get_deletedMarkReactive() { @@ -207,18 +149,10 @@ namespace AyuSettings { return editedMarkReactive.value(); } - rpl::producer get_showGhostToggleInDrawerReactive() { - return showGhostToggleInDrawerReactive.value(); - } - rpl::producer get_showPeerId() { return showPeerIdReactive.value(); } - rpl::producer get_showMessageSeconds() { - return showMessageSecondsReactive.value(); - } - rpl::producer get_ghostModeEnabled() { return ghostModeEnabled.value(); } diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index cd1148d74..a96264552 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -27,6 +27,9 @@ namespace AyuSettings { keepDeletedMessages = true; keepMessagesHistory = true; + // ~ QoL toggles + enableAds = false; + // ~ Customization deletedMark = "🧹"; editedMark = tr::lng_edited(tr::now); @@ -60,6 +63,8 @@ namespace AyuSettings { QS_FIELD(bool, keepMessagesHistory) + QS_FIELD(bool, enableAds) + QS_FIELD(QString, deletedMark) QS_FIELD(QString, editedMark) @@ -83,6 +88,8 @@ namespace AyuSettings { void set_keepDeletedMessages(bool val); void set_keepMessagesHistory(bool val); + void set_enableAds(bool val); + void set_deletedMark(QString val); void set_editedMark(QString val); void set_showGhostToggleInDrawer(bool val); @@ -96,18 +103,9 @@ namespace AyuSettings { void save(); - rpl::producer get_sendReadPacketsReactive(); - rpl::producer get_sendOnlinePacketsReactive(); - rpl::producer get_sendOfflinePacketAfterOnlineReactive(); - rpl::producer get_sendUploadProgressReactive(); - rpl::producer get_useScheduledMessagesReactive(); - rpl::producer get_keepDeletedMessagesReactive(); - rpl::producer get_keepMessagesHistoryReactive(); rpl::producer get_deletedMarkReactive(); rpl::producer get_editedMarkReactive(); - rpl::producer get_showGhostToggleInDrawer(); rpl::producer get_showPeerId(); - rpl::producer get_showMessageSeconds(); // computed fields rpl::producer get_ghostModeEnabled(); diff --git a/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp index 614e432e4..6b3bd79d2 100644 --- a/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp @@ -160,6 +160,26 @@ namespace Settings { }, container->lifetime()); } + void Ayu::SetupQoLToggles(not_null container) { + auto settings = &AyuSettings::getInstance(); + + AddSubsectionTitle(container, tr::ayu_QoLTogglesHeader()); + + AddButton( + container, + tr::ayu_EnableAds(), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->enableAds) + )->toggledValue( + ) | rpl::filter([=](bool enabled) { + return (enabled != settings->enableAds); + }) | rpl::start_with_next([=](bool enabled) { + settings->set_enableAds(enabled); + AyuSettings::save(); + }, container->lifetime()); + } + void Ayu::SetupCustomization(not_null container, not_null controller) { auto settings = &AyuSettings::getInstance(); @@ -187,6 +207,8 @@ namespace Settings { Ui::show(std::move(box)); }); + SetupShowPeerId(container, controller); + AddButton( container, tr::ayu_ShowGhostToggleInDrawer(), @@ -201,7 +223,21 @@ namespace Settings { AyuSettings::save(); }, container->lifetime()); - SetupShowPeerId(container, controller); + AddButton( + container, + tr::ayu_SettingsShowMessageSeconds(), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->showMessageSeconds) + )->toggledValue( + ) | rpl::filter([=](bool enabled) { + return (enabled != settings->showMessageSeconds); + }) | rpl::start_with_next([=](bool enabled) { + settings->set_showMessageSeconds(enabled); + AyuSettings::save(); + }, container->lifetime()); + + AddDividerText(container, tr::ayu_SettingsCustomizationHint()); } void Ayu::SetupShowPeerId(not_null container, not_null controller) { @@ -249,6 +285,11 @@ namespace Settings { AddDivider(container); + AddSkip(container); + SetupQoLToggles(container); + + AddDivider(container); + AddSkip(container); SetupCustomization(container, controller); diff --git a/Telegram/SourceFiles/ayu/settings/settings_ayu.h b/Telegram/SourceFiles/ayu/settings/settings_ayu.h index 48590dc3d..38a5a13bb 100644 --- a/Telegram/SourceFiles/ayu/settings/settings_ayu.h +++ b/Telegram/SourceFiles/ayu/settings/settings_ayu.h @@ -20,6 +20,7 @@ namespace Settings { private: void SetupGhostEssentials(not_null container); void SetupSpyEssentials(not_null container); + void SetupQoLToggles(not_null container); void SetupCustomization(not_null container, not_null controller); void SetupShowPeerId(not_null container, not_null controller); diff --git a/Telegram/SourceFiles/data/data_sponsored_messages.cpp b/Telegram/SourceFiles/data/data_sponsored_messages.cpp index 9f4f992ed..5fb2b4fe3 100644 --- a/Telegram/SourceFiles/data/data_sponsored_messages.cpp +++ b/Telegram/SourceFiles/data/data_sponsored_messages.cpp @@ -22,6 +22,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/image/image_location_factory.h" #include "ui/text/text_utilities.h" // Ui::Text::RichLangValue. +#include "ayu/ayu_settings.h" + namespace Data { namespace { @@ -175,7 +177,8 @@ void SponsoredMessages::inject( } bool SponsoredMessages::canHaveFor(not_null history) const { - return history->peer->isChannel(); + auto settings = &AyuSettings::getInstance(); + return settings->enableAds && history->peer->isChannel(); } void SponsoredMessages::request(not_null history, Fn done) { diff --git a/ayu-scripts/desktop-specific.json b/ayu-scripts/desktop-specific.json index 5b31c471f..5d55374ed 100644 --- a/ayu-scripts/desktop-specific.json +++ b/ayu-scripts/desktop-specific.json @@ -1,7 +1,9 @@ { - "SettingsWatermark": "AyuGram developed and maintained by Radolyn Labs", + "SettingsWatermark": "AyuGram developed and maintained by Radolyn Labs.", + "SettingsCustomizationHint": "After making changes to the \"Customization\" section, you must restart the application.", "SettingsShowID": "Show peer ID", "SettingsShowID_Hide": "Hide", + "SettingsShowMessageSeconds": "Show message seconds", "ContextCopyID": "Copy ID", "IDCopiedToast": "ID copied to clipboard.", "DrawerGhostModeToggle": "Ghost Mode" diff --git a/ayu-scripts/sync-translations.py b/ayu-scripts/sync-translations.py index 4ca5b1fe1..b4348c2c4 100644 --- a/ayu-scripts/sync-translations.py +++ b/ayu-scripts/sync-translations.py @@ -38,7 +38,8 @@ data += ''' ''' for k, v in strings.items(): - data += f'"{k}" = "{v}";\n' + escaped = v.replace('"', '\\"') + data += f'"{k}" = "{escaped}";\n' with open(os.path.realpath('./Telegram/Resources/langs/lang.strings'), 'w', encoding='utf-8') as f: f.write(data)