diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 5ec33bd36..3370c2a8a 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -843,6 +843,30 @@ void MainMenu::setupMenu() { toggle); }, _nightThemeToggle->lifetime()); + _ghostModeToggle = addAction( + rpl::single(QString("Ghost Mode")), + { &st::menuIconFake, kIconPurple } + )->toggleOn(rpl::single((&AyuSettings::getInstance())->ghostMode)); + + _ghostModeToggle->toggledChanges( + ) | rpl::filter([=](bool ghostMode) { + const auto settings = &AyuSettings::getInstance(); + return (ghostMode != settings->ghostMode); + }) | rpl::start_with_next([=](bool ghostMode) { + const auto settings = &AyuSettings::getInstance(); + settings->set_ghostMode(ghostMode); + + settings->set_sendReadPackets(!ghostMode); + settings->set_sendOnlinePackets(!ghostMode); + settings->set_sendOfflinePacketAfterOnline(ghostMode); + settings->set_sendUploadProgress(!ghostMode); + settings->set_keepDeletedMessages(ghostMode); + settings->set_keepMessagesHistory(ghostMode); + + AyuSettings::save(); + + }, _ghostModeToggle->lifetime()); + Core::App().settings().systemDarkModeValue( ) | rpl::start_with_next([=](std::optional darkMode) { const auto darkModeEnabled diff --git a/Telegram/SourceFiles/window/window_main_menu.h b/Telegram/SourceFiles/window/window_main_menu.h index 6356f4103..25e0c7d9e 100644 --- a/Telegram/SourceFiles/window/window_main_menu.h +++ b/Telegram/SourceFiles/window/window_main_menu.h @@ -95,6 +95,7 @@ private: not_null _telegram; not_null _version; QPointer _nightThemeToggle; + QPointer _ghostModeToggle; rpl::event_stream _nightThemeSwitches; base::Timer _nightThemeSwitch; base::unique_qptr _contextMenu;