From 45497bc4444d2024c0dafddc8e57677a770a93c5 Mon Sep 17 00:00:00 2001 From: ZavaruKitsu Date: Tue, 6 Jun 2023 23:59:36 +0300 Subject: [PATCH] feat: implement `showGhostToggleInDrawer` feat: implement `markReadAfterSend` feat: tweak defaults fix: remove comma if a message is deleted --- Telegram/Resources/langs/lang.strings | 2 + Telegram/SourceFiles/ayu/ayu_settings.cpp | 44 ++++++++++++++++--- Telegram/SourceFiles/ayu/ayu_settings.h | 30 ++++++++++--- .../SourceFiles/ayu/settings/settings_ayu.cpp | 32 +++++++++++++- .../SourceFiles/history/history_widget.cpp | 6 +++ .../history/view/history_view_bottom_info.cpp | 7 ++- .../SourceFiles/storage/localimageloader.cpp | 1 + .../SourceFiles/window/window_main_menu.cpp | 26 ++++++----- 8 files changed, 119 insertions(+), 29 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 4d9a198b7..b07f190e6 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -3864,6 +3864,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ayu_EnableAds" = "Enable ads"; "ayu_CustomizationHeader" = "Customization"; "ayu_DeletedMarkText" = "Deleted mark"; +"ayu_EditedMarkText" = "Edited mark"; "ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle"; "ayu_CleanDatabase" = "Clean database"; "ayu_CleanDatabaseNotification" = "AyuGram database cleaned"; @@ -3874,6 +3875,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ayu_EditsHistoryTitle" = "Edits history"; "ayu_EditsHistoryMenuText" = "History"; "ayu_ReadUntilMenuText" = "Read until"; +"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"; diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index c6b003920..435fd2499 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -9,13 +9,19 @@ namespace AyuSettings { rpl::variable sendReadPacketsReactive; rpl::variable sendOnlinePacketsReactive; - rpl::variable sendOfflinePacketAfterOnlineReactive; 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 ghostModeEnabled; @@ -44,13 +50,19 @@ namespace AyuSettings { void postinitialize() { sendReadPacketsReactive = settings->sendReadPackets; sendOnlinePacketsReactive = settings->sendOnlinePackets; - sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline; 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; ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets; @@ -98,14 +110,19 @@ namespace AyuSettings { sendOnlinePacketsReactive = val; } + void AyuGramSettings::set_sendUploadProgress(bool val) { + sendUploadProgress = val; + sendUploadProgressReactive = val; + } + void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) { sendOfflinePacketAfterOnline = val; sendOfflinePacketAfterOnlineReactive = val; } - void AyuGramSettings::set_sendUploadProgress(bool val) { - sendUploadProgress = val; - sendUploadProgressReactive = val; + void AyuGramSettings::set_markReadAfterSend(bool val) { + markReadAfterSend = val; + markReadAfterSendReactive = val; } void AyuGramSettings::set_useScheduledMessages(bool val) { @@ -133,6 +150,11 @@ namespace AyuSettings { editedMarkReactive = editedMark; } + void AyuGramSettings::set_showGhostToggleInDrawer(bool val) { + showGhostToggleInDrawer = val; + showGhostToggleInDrawerReactive = val; + } + void AyuGramSettings::set_showPeerId(int val) { showPeerId = val; showPeerIdReactive = val; @@ -146,12 +168,16 @@ namespace AyuSettings { return sendOnlinePacketsReactive.value(); } + rpl::producer get_sendUploadProgressReactive() { + return sendUploadProgressReactive.value(); + } + rpl::producer get_sendOfflinePacketAfterOnlineReactive() { return sendOfflinePacketAfterOnlineReactive.value(); } - rpl::producer get_sendUploadProgressReactive() { - return sendUploadProgressReactive.value(); + rpl::producer get_markReadAfterSend() { + return markReadAfterSendReactive.value(); } rpl::producer get_useScheduledMessagesReactive() { @@ -174,6 +200,10 @@ namespace AyuSettings { return editedMarkReactive.value(); } + rpl::producer get_showGhostToggleInDrawerReactive() { + return showGhostToggleInDrawerReactive.value(); + } + rpl::producer get_showPeerId() { return showPeerIdReactive.value(); } diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index 64d428ce2..0e4daf3bc 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -13,15 +13,24 @@ namespace AyuSettings { public: AyuGramSettings() { + // ~ Ghost essentials sendReadPackets = true; sendOnlinePackets = true; - sendOfflinePacketAfterOnline = false; sendUploadProgress = true; + + sendOfflinePacketAfterOnline = false; + markReadAfterSend = false; + useScheduledMessages = false; - keepDeletedMessages = false; - keepMessagesHistory = false; + + // ~ Message edits & deletion history + keepDeletedMessages = true; + keepMessagesHistory = true; + + // ~ Customization deletedMark = "🧹"; editedMark = tr::lng_edited(tr::now); + showGhostToggleInDrawer = true; /* * showPeerId = 0 means no ID shown @@ -37,9 +46,11 @@ namespace AyuSettings { QS_FIELD(bool, sendOnlinePackets) + QS_FIELD(bool, sendUploadProgress) + QS_FIELD(bool, sendOfflinePacketAfterOnline) - QS_FIELD(bool, sendUploadProgress) + QS_FIELD(bool, markReadAfterSend) QS_FIELD(bool, useScheduledMessages) @@ -51,18 +62,26 @@ namespace AyuSettings { QS_FIELD(QString, editedMark) + QS_FIELD(bool, showGhostToggleInDrawer) + QS_FIELD(int, showPeerId) public: void set_sendReadPackets(bool val); void set_sendOnlinePackets(bool val); - void set_sendOfflinePacketAfterOnline(bool val); void set_sendUploadProgress(bool val); + + void set_sendOfflinePacketAfterOnline(bool val); + void set_markReadAfterSend(bool val); + void set_useScheduledMessages(bool val); + void set_keepDeletedMessages(bool val); void set_keepMessagesHistory(bool val); + void set_deletedMark(QString val); void set_editedMark(QString val); + void set_showGhostToggleInDrawer(bool val); void set_showPeerId(int val); }; @@ -81,6 +100,7 @@ namespace AyuSettings { rpl::producer get_keepMessagesHistoryReactive(); rpl::producer get_deletedMarkReactive(); rpl::producer get_editedMarkReactive(); + rpl::producer get_showGhostToggleInDrawer(); rpl::producer get_showPeerId(); // computed fields diff --git a/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp index b66942869..614e432e4 100644 --- a/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/settings/settings_ayu.cpp @@ -97,6 +97,20 @@ namespace Settings { AyuSettings::save(); }, container->lifetime()); + AddButton( + container, + tr::ayu_MarkReadAfterSend(), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->markReadAfterSend) + )->toggledValue( + ) | rpl::filter([=](bool enabled) { + return (enabled != settings->markReadAfterSend); + }) | rpl::start_with_next([=](bool enabled) { + settings->set_markReadAfterSend(enabled); + AyuSettings::save(); + }, container->lifetime()); + AddButton( container, tr::ayu_UseScheduledMessages(), @@ -147,6 +161,8 @@ namespace Settings { } void Ayu::SetupCustomization(not_null container, not_null controller) { + auto settings = &AyuSettings::getInstance(); + AddSubsectionTitle(container, tr::ayu_CustomizationHeader()); auto btn = AddButtonWithLabel( @@ -162,7 +178,7 @@ namespace Settings { auto btn2 = AddButtonWithLabel( container, - rpl::single(QString("Edited mark")), + tr::ayu_EditedMarkText(), AyuSettings::get_editedMarkReactive(), st::settingsButtonNoIcon ); @@ -171,6 +187,20 @@ namespace Settings { Ui::show(std::move(box)); }); + AddButton( + container, + tr::ayu_ShowGhostToggleInDrawer(), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->showGhostToggleInDrawer) + )->toggledValue( + ) | rpl::filter([=](bool enabled) { + return (enabled != settings->showGhostToggleInDrawer); + }) | rpl::start_with_next([=](bool enabled) { + settings->set_showGhostToggleInDrawer(enabled); + AyuSettings::save(); + }, container->lifetime()); + SetupShowPeerId(container, controller); } diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index ff6a15e89..fb59801b3 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -173,6 +173,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include #include "ayu/ayu_settings.h" +#include "ayu/ayu_state.h" namespace { @@ -3873,6 +3874,11 @@ void HistoryWidget::send(Api::SendOptions options) { options.scheduled = current + 12; } + if (!settings->sendReadPackets && settings->markReadAfterSend) { + AyuState::setAllowSendReadPacket(true); + _history->session().data().histories().readInboxOnNewMessage(_history->lastMessage()); + } + if (!_history) { return; } else if (_editMsgId) { diff --git a/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp b/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp index 524d2ecf3..d3b810b40 100644 --- a/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp +++ b/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp @@ -463,14 +463,13 @@ void BottomInfo::layout() { } void BottomInfo::layoutDateText() { - const auto ayuSettings = &AyuSettings::getInstance(); - auto editedMarkValue = ayuSettings->editedMark; + const auto settings = &AyuSettings::getInstance(); const auto edited = (_data.flags & Data::Flag::Edited) - ? (editedMarkValue + ' ') + ? (settings->editedMark + ' ') : QString(); const auto author = _data.author; - const auto prefix = !author.isEmpty() ? u", "_q : QString(); + const auto prefix = !author.isEmpty() ? (author == settings->deletedMark ? u" "_q : u", "_q) : QString(); const auto date = edited + QLocale().toString( _data.date.time(), QLocale::ShortFormat); diff --git a/Telegram/SourceFiles/storage/localimageloader.cpp b/Telegram/SourceFiles/storage/localimageloader.cpp index 3f39944fa..62c6b5169 100644 --- a/Telegram/SourceFiles/storage/localimageloader.cpp +++ b/Telegram/SourceFiles/storage/localimageloader.cpp @@ -54,6 +54,7 @@ base::options::toggle SendLargePhotos({ .id = kOptionSendLargePhotos, .name = "Send large photos", .description = "Increase the side limit on compressed images to 2560px.", + .defaultValue = true }); std::atomic SendLargePhotosAtomic/* = false*/; diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 86299ef33..2de53d731 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -845,21 +845,23 @@ void MainMenu::setupMenu() { }, _nightThemeToggle->lifetime()); const auto settings = &AyuSettings::getInstance(); - _ghostModeToggle = addAction( - tr::ayu_DrawerGhostModeToggle(), - { &st::menuIconFake, kIconPurple } - )->toggleOn(AyuSettings::get_ghostModeEnabled()); + if (settings->showGhostToggleInDrawer) { + _ghostModeToggle = addAction( + tr::ayu_DrawerGhostModeToggle(), + {&st::menuIconFake, kIconPurple} + )->toggleOn(AyuSettings::get_ghostModeEnabled()); - _ghostModeToggle->toggledChanges( - ) | rpl::start_with_next([=](bool ghostMode) { - settings->set_sendReadPackets(!ghostMode); - settings->set_sendOnlinePackets(!ghostMode); - settings->set_sendUploadProgress(!ghostMode); + _ghostModeToggle->toggledChanges( + ) | rpl::start_with_next([=](bool ghostMode) { + settings->set_sendReadPackets(!ghostMode); + settings->set_sendOnlinePackets(!ghostMode); + settings->set_sendUploadProgress(!ghostMode); - settings->set_sendOfflinePacketAfterOnline(ghostMode); + settings->set_sendOfflinePacketAfterOnline(ghostMode); - AyuSettings::save(); - }, _ghostModeToggle->lifetime()); + AyuSettings::save(); + }, _ghostModeToggle->lifetime()); + } Core::App().settings().systemDarkModeValue( ) | rpl::start_with_next([=](std::optional darkMode) {