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_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";

View file

@ -9,21 +9,10 @@ namespace AyuSettings {
rpl::variable<bool> sendReadPacketsReactive;
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> editedMarkReactive;
rpl::variable<bool> showGhostToggleInDrawerReactive;
rpl::variable<int> showPeerIdReactive;
rpl::variable<bool> showMessageSecondsReactive;
rpl::variable<bool> 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<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() {
@ -207,18 +149,10 @@ namespace AyuSettings {
return editedMarkReactive.value();
}
rpl::producer<bool> get_showGhostToggleInDrawerReactive() {
return showGhostToggleInDrawerReactive.value();
}
rpl::producer<int> get_showPeerId() {
return showPeerIdReactive.value();
}
rpl::producer<bool> get_showMessageSeconds() {
return showMessageSecondsReactive.value();
}
rpl::producer<bool> get_ghostModeEnabled() {
return ghostModeEnabled.value();
}

View file

@ -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<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_editedMarkReactive();
rpl::producer<QString> get_showGhostToggleInDrawer();
rpl::producer<int> get_showPeerId();
rpl::producer<bool> get_showMessageSeconds();
// computed fields
rpl::producer<bool> get_ghostModeEnabled();

View file

@ -160,6 +160,26 @@ namespace Settings {
}, 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) {
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<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
@ -249,6 +285,11 @@ namespace Settings {
AddDivider(container);
AddSkip(container);
SetupQoLToggles(container);
AddDivider(container);
AddSkip(container);
SetupCustomization(container, controller);

View file

@ -20,6 +20,7 @@ namespace Settings {
private:
void SetupGhostEssentials(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 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/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*> 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) {

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

View file

@ -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)