mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
feat: implement enableAds
& add views for options
This commit is contained in:
parent
9aafbddee3
commit
a5bd116b40
8 changed files with 67 additions and 84 deletions
|
@ -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";
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue