feat: implement enableAds & add views for options

This commit is contained in:
ZavaruKitsu 2023-06-09 12:20:56 +03:00
parent 9aafbddee3
commit a5bd116b40
8 changed files with 67 additions and 84 deletions

View file

@ -3867,6 +3867,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"ayu_EditedMarkText" = "Edited mark"; "ayu_EditedMarkText" = "Edited mark";
"ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle"; "ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle";
"ayu_CleanDatabase" = "Clean database"; "ayu_CleanDatabase" = "Clean database";
"ayu_WALMode" = "Enable WAL mode";
"ayu_CleanDatabaseNotification" = "AyuGram database cleaned"; "ayu_CleanDatabaseNotification" = "AyuGram database cleaned";
"ayu_EnableGhostMode" = "Enable Ghost"; "ayu_EnableGhostMode" = "Enable Ghost";
"ayu_DisableGhostMode" = "Disable 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_ForwardsRestrictedInfoDeleted" = "Forwarding of deleted message is not supported.";
"ayu_LikelyOfflineStatus" = "offline ?"; "ayu_LikelyOfflineStatus" = "offline ?";
"ayu_GhostModeShortcut" = "Enter with Ghost"; "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" = "Show peer ID";
"ayu_SettingsShowID_Hide" = "Hide"; "ayu_SettingsShowID_Hide" = "Hide";
"ayu_SettingsShowMessageSeconds" = "Show message seconds";
"ayu_ContextCopyID" = "Copy ID"; "ayu_ContextCopyID" = "Copy ID";
"ayu_IDCopiedToast" = "ID copied to clipboard."; "ayu_IDCopiedToast" = "ID copied to clipboard.";
"ayu_DrawerGhostModeToggle" = "Ghost Mode"; "ayu_DrawerGhostModeToggle" = "Ghost Mode";

View file

@ -9,21 +9,10 @@ namespace AyuSettings {
rpl::variable<bool> sendReadPacketsReactive; rpl::variable<bool> sendReadPacketsReactive;
rpl::variable<bool> sendOnlinePacketsReactive; rpl::variable<bool> sendOnlinePacketsReactive;
rpl::variable<bool> sendUploadProgressReactive;
rpl::variable<bool> sendOfflinePacketAfterOnlineReactive;
rpl::variable<bool> markReadAfterSendReactive;
rpl::variable<bool> useScheduledMessagesReactive;
rpl::variable<bool> keepDeletedMessagesReactive;
rpl::variable<bool> keepMessagesHistoryReactive;
rpl::variable<QString> deletedMarkReactive; rpl::variable<QString> deletedMarkReactive;
rpl::variable<QString> editedMarkReactive; rpl::variable<QString> editedMarkReactive;
rpl::variable<bool> showGhostToggleInDrawerReactive;
rpl::variable<int> showPeerIdReactive; rpl::variable<int> showPeerIdReactive;
rpl::variable<bool> showMessageSecondsReactive;
rpl::variable<bool> ghostModeEnabled; rpl::variable<bool> ghostModeEnabled;
@ -51,21 +40,10 @@ namespace AyuSettings {
void postinitialize() { void postinitialize() {
sendReadPacketsReactive = settings->sendReadPackets; sendReadPacketsReactive = settings->sendReadPackets;
sendOnlinePacketsReactive = settings->sendOnlinePackets; sendOnlinePacketsReactive = settings->sendOnlinePackets;
sendUploadProgressReactive = settings->sendUploadProgress;
sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline;
markReadAfterSendReactive = settings->markReadAfterSend;
useScheduledMessagesReactive = settings->useScheduledMessages;
keepDeletedMessagesReactive = settings->keepDeletedMessages;
keepMessagesHistoryReactive = settings->keepMessagesHistory;
deletedMarkReactive = settings->deletedMark; deletedMarkReactive = settings->deletedMark;
editedMarkReactive = settings->editedMark; editedMarkReactive = settings->editedMark;
showGhostToggleInDrawerReactive = settings->showGhostToggleInDrawer;
showPeerIdReactive = settings->showPeerId; showPeerIdReactive = settings->showPeerId;
showMessageSecondsReactive = settings->showMessageSeconds;
ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets; ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets;
} }
@ -114,32 +92,30 @@ namespace AyuSettings {
void AyuGramSettings::set_sendUploadProgress(bool val) { void AyuGramSettings::set_sendUploadProgress(bool val) {
sendUploadProgress = val; sendUploadProgress = val;
sendUploadProgressReactive = val;
} }
void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) { void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) {
sendOfflinePacketAfterOnline = val; sendOfflinePacketAfterOnline = val;
sendOfflinePacketAfterOnlineReactive = val;
} }
void AyuGramSettings::set_markReadAfterSend(bool val) { void AyuGramSettings::set_markReadAfterSend(bool val) {
markReadAfterSend = val; markReadAfterSend = val;
markReadAfterSendReactive = val;
} }
void AyuGramSettings::set_useScheduledMessages(bool val) { void AyuGramSettings::set_useScheduledMessages(bool val) {
useScheduledMessages = val; useScheduledMessages = val;
useScheduledMessagesReactive = val;
} }
void AyuGramSettings::set_keepDeletedMessages(bool val) { void AyuGramSettings::set_keepDeletedMessages(bool val) {
keepDeletedMessages = val; keepDeletedMessages = val;
keepDeletedMessagesReactive = val;
} }
void AyuGramSettings::set_keepMessagesHistory(bool val) { void AyuGramSettings::set_keepMessagesHistory(bool val) {
keepMessagesHistory = val; keepMessagesHistory = val;
keepMessagesHistoryReactive = val; }
void AyuGramSettings::set_enableAds(bool val) {
enableAds = val;
} }
void AyuGramSettings::set_deletedMark(QString val) { void AyuGramSettings::set_deletedMark(QString val) {
@ -154,7 +130,6 @@ namespace AyuSettings {
void AyuGramSettings::set_showGhostToggleInDrawer(bool val) { void AyuGramSettings::set_showGhostToggleInDrawer(bool val) {
showGhostToggleInDrawer = val; showGhostToggleInDrawer = val;
showGhostToggleInDrawerReactive = val;
} }
void AyuGramSettings::set_showPeerId(int val) { void AyuGramSettings::set_showPeerId(int val) {
@ -164,39 +139,6 @@ namespace AyuSettings {
void AyuGramSettings::set_showMessageSeconds(bool val) { void AyuGramSettings::set_showMessageSeconds(bool val) {
showMessageSeconds = val; showMessageSeconds = val;
showMessageSecondsReactive = val;
}
rpl::producer<bool> get_sendReadPacketsReactive() {
return sendReadPacketsReactive.value();
}
rpl::producer<bool> get_sendOnlinePacketsReactive() {
return sendOnlinePacketsReactive.value();
}
rpl::producer<bool> get_sendUploadProgressReactive() {
return sendUploadProgressReactive.value();
}
rpl::producer<bool> get_sendOfflinePacketAfterOnlineReactive() {
return sendOfflinePacketAfterOnlineReactive.value();
}
rpl::producer<bool> get_markReadAfterSend() {
return markReadAfterSendReactive.value();
}
rpl::producer<bool> get_useScheduledMessagesReactive() {
return useScheduledMessagesReactive.value();
}
rpl::producer<bool> get_keepDeletedMessagesReactive() {
return keepDeletedMessagesReactive.value();
}
rpl::producer<bool> get_keepMessagesHistoryReactive() {
return keepMessagesHistoryReactive.value();
} }
rpl::producer<QString> get_deletedMarkReactive() { rpl::producer<QString> get_deletedMarkReactive() {
@ -207,18 +149,10 @@ namespace AyuSettings {
return editedMarkReactive.value(); return editedMarkReactive.value();
} }
rpl::producer<bool> get_showGhostToggleInDrawerReactive() {
return showGhostToggleInDrawerReactive.value();
}
rpl::producer<int> get_showPeerId() { rpl::producer<int> get_showPeerId() {
return showPeerIdReactive.value(); return showPeerIdReactive.value();
} }
rpl::producer<bool> get_showMessageSeconds() {
return showMessageSecondsReactive.value();
}
rpl::producer<bool> get_ghostModeEnabled() { rpl::producer<bool> get_ghostModeEnabled() {
return ghostModeEnabled.value(); return ghostModeEnabled.value();
} }

View file

@ -27,6 +27,9 @@ namespace AyuSettings {
keepDeletedMessages = true; keepDeletedMessages = true;
keepMessagesHistory = true; keepMessagesHistory = true;
// ~ QoL toggles
enableAds = false;
// ~ Customization // ~ Customization
deletedMark = "🧹"; deletedMark = "🧹";
editedMark = tr::lng_edited(tr::now); editedMark = tr::lng_edited(tr::now);
@ -60,6 +63,8 @@ namespace AyuSettings {
QS_FIELD(bool, keepMessagesHistory) QS_FIELD(bool, keepMessagesHistory)
QS_FIELD(bool, enableAds)
QS_FIELD(QString, deletedMark) QS_FIELD(QString, deletedMark)
QS_FIELD(QString, editedMark) QS_FIELD(QString, editedMark)
@ -83,6 +88,8 @@ namespace AyuSettings {
void set_keepDeletedMessages(bool val); void set_keepDeletedMessages(bool val);
void set_keepMessagesHistory(bool val); void set_keepMessagesHistory(bool val);
void set_enableAds(bool val);
void set_deletedMark(QString val); void set_deletedMark(QString val);
void set_editedMark(QString val); void set_editedMark(QString val);
void set_showGhostToggleInDrawer(bool val); void set_showGhostToggleInDrawer(bool val);
@ -96,18 +103,9 @@ namespace AyuSettings {
void save(); void save();
rpl::producer<bool> get_sendReadPacketsReactive();
rpl::producer<bool> get_sendOnlinePacketsReactive();
rpl::producer<bool> get_sendOfflinePacketAfterOnlineReactive();
rpl::producer<bool> get_sendUploadProgressReactive();
rpl::producer<bool> get_useScheduledMessagesReactive();
rpl::producer<bool> get_keepDeletedMessagesReactive();
rpl::producer<bool> get_keepMessagesHistoryReactive();
rpl::producer<QString> get_deletedMarkReactive(); rpl::producer<QString> get_deletedMarkReactive();
rpl::producer<QString> get_editedMarkReactive(); rpl::producer<QString> get_editedMarkReactive();
rpl::producer<QString> get_showGhostToggleInDrawer();
rpl::producer<int> get_showPeerId(); rpl::producer<int> get_showPeerId();
rpl::producer<bool> get_showMessageSeconds();
// computed fields // computed fields
rpl::producer<bool> get_ghostModeEnabled(); rpl::producer<bool> get_ghostModeEnabled();

View file

@ -160,6 +160,26 @@ namespace Settings {
}, container->lifetime()); }, container->lifetime());
} }
void Ayu::SetupQoLToggles(not_null<Ui::VerticalLayout *> 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<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) { void Ayu::SetupCustomization(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -187,6 +207,8 @@ namespace Settings {
Ui::show(std::move(box)); Ui::show(std::move(box));
}); });
SetupShowPeerId(container, controller);
AddButton( AddButton(
container, container,
tr::ayu_ShowGhostToggleInDrawer(), tr::ayu_ShowGhostToggleInDrawer(),
@ -201,7 +223,21 @@ namespace Settings {
AyuSettings::save(); AyuSettings::save();
}, container->lifetime()); }, 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<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) { void Ayu::SetupShowPeerId(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
@ -249,6 +285,11 @@ namespace Settings {
AddDivider(container); AddDivider(container);
AddSkip(container);
SetupQoLToggles(container);
AddDivider(container);
AddSkip(container); AddSkip(container);
SetupCustomization(container, controller); SetupCustomization(container, controller);

View file

@ -20,6 +20,7 @@ namespace Settings {
private: private:
void SetupGhostEssentials(not_null<Ui::VerticalLayout *> container); void SetupGhostEssentials(not_null<Ui::VerticalLayout *> container);
void SetupSpyEssentials(not_null<Ui::VerticalLayout *> container); void SetupSpyEssentials(not_null<Ui::VerticalLayout *> container);
void SetupQoLToggles(not_null<Ui::VerticalLayout *> container);
void SetupCustomization(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller); void SetupCustomization(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller);
void SetupShowPeerId(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller); void SetupShowPeerId(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller);

View file

@ -22,6 +22,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/image/image_location_factory.h" #include "ui/image/image_location_factory.h"
#include "ui/text/text_utilities.h" // Ui::Text::RichLangValue. #include "ui/text/text_utilities.h" // Ui::Text::RichLangValue.
#include "ayu/ayu_settings.h"
namespace Data { namespace Data {
namespace { namespace {
@ -175,7 +177,8 @@ void SponsoredMessages::inject(
} }
bool SponsoredMessages::canHaveFor(not_null<History*> history) const { bool SponsoredMessages::canHaveFor(not_null<History*> history) const {
return history->peer->isChannel(); auto settings = &AyuSettings::getInstance();
return settings->enableAds && history->peer->isChannel();
} }
void SponsoredMessages::request(not_null<History*> history, Fn<void()> done) { void SponsoredMessages::request(not_null<History*> history, Fn<void()> done) {

View file

@ -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": "Show peer ID",
"SettingsShowID_Hide": "Hide", "SettingsShowID_Hide": "Hide",
"SettingsShowMessageSeconds": "Show message seconds",
"ContextCopyID": "Copy ID", "ContextCopyID": "Copy ID",
"IDCopiedToast": "ID copied to clipboard.", "IDCopiedToast": "ID copied to clipboard.",
"DrawerGhostModeToggle": "Ghost Mode" "DrawerGhostModeToggle": "Ghost Mode"

View file

@ -38,7 +38,8 @@ data += '''
''' '''
for k, v in strings.items(): 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: with open(os.path.realpath('./Telegram/Resources/langs/lang.strings'), 'w', encoding='utf-8') as f:
f.write(data) f.write(data)