diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index 4dd353ed4..4541c15a2 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -211,6 +211,11 @@ namespace AyuSettings enableAds = val; } + void AyuGramSettings::set_disableStories(bool val) + { + disableStories = val; + } + void AyuGramSettings::set_deletedMark(QString val) { deletedMark = std::move(val); diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index cbb27837d..a773a05b3 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -104,6 +104,10 @@ namespace AyuSettings void set_enableAds(bool val); + void set_disableStories(bool val); + + void set_copyUsernameAsLink(bool val); + void set_deletedMark(QString val); void set_editedMark(QString val); @@ -121,8 +125,6 @@ namespace AyuSettings void set_gifConfirmation(bool val); void set_voiceConfirmation(bool val); - - void set_copyUsernameAsLink(bool val); }; NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE( @@ -137,6 +139,8 @@ namespace AyuSettings saveDeletedMessages, saveMessagesHistory, enableAds, + disableStories, + copyUsernameAsLink, deletedMark, editedMark, recentStickersCount, @@ -145,8 +149,7 @@ namespace AyuSettings showMessageSeconds, stickerConfirmation, gifConfirmation, - voiceConfirmation, - copyUsernameAsLink + voiceConfirmation ); AyuGramSettings& getInstance(); diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp index 9d0f50923..ef3dcf528 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp @@ -228,6 +228,22 @@ namespace Settings AyuSettings::save(); }, container->lifetime()); + AddButton( + container, + tr::ayu_DisableStories(), + st::settingsButtonNoIcon + )->toggleOn( + rpl::single(settings->disableStories) + )->toggledValue( + ) | rpl::filter([=](bool enabled) + { + return (enabled != settings->disableStories); + }) | start_with_next([=](bool enabled) + { + settings->set_disableStories(enabled); + AyuSettings::save(); + }, container->lifetime()); + AddButton( container, tr::ayu_CopyUsernameAsLink(), diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index e1cf3ef8b..207b786ef 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -320,7 +320,12 @@ Session::Session(not_null session) } }, _lifetime); - _stories->loadMore(Data::StorySourcesList::NotHidden); + // AyuGram disableStories + const auto settings = &AyuSettings::getInstance(); + if (!settings->disableStories) + { + _stories->loadMore(Data::StorySourcesList::NotHidden); + } }); } diff --git a/Telegram/SourceFiles/data/data_stories.cpp b/Telegram/SourceFiles/data/data_stories.cpp index 5e01219cf..aba09d02e 100644 --- a/Telegram/SourceFiles/data/data_stories.cpp +++ b/Telegram/SourceFiles/data/data_stories.cpp @@ -126,6 +126,13 @@ Main::Session &Stories::session() const { } void Stories::apply(const MTPDupdateStory &data) { + // AyuGram disableStories + const auto settings = &AyuSettings::getInstance(); + if (settings->disableStories) + { + return; + } + const auto peerId = peerFromUser(data.vuser_id()); const auto user = not_null(_owner->peer(peerId)->asUser()); const auto now = base::unixtime::now(); @@ -175,10 +182,24 @@ void Stories::apply(const MTPDupdateStory &data) { } void Stories::apply(const MTPDupdateReadStories &data) { + // AyuGram disableStories + const auto settings = &AyuSettings::getInstance(); + if (settings->disableStories) + { + return; + } + bumpReadTill(peerFromUser(data.vuser_id()), data.vmax_id().v); } void Stories::apply(not_null peer, const MTPUserStories *data) { + // AyuGram disableStories + const auto settings = &AyuSettings::getInstance(); + if (settings->disableStories) + { + return; + } + if (!data) { applyDeletedFromSources(peer->id, StorySourcesList::NotHidden); applyDeletedFromSources(peer->id, StorySourcesList::Hidden); @@ -191,6 +212,13 @@ void Stories::apply(not_null peer, const MTPUserStories *data) { } Story *Stories::applyFromWebpage(PeerId peerId, const MTPstoryItem &story) { + // AyuGram disableStories + const auto settings = &AyuSettings::getInstance(); + if (settings->disableStories) + { + return nullptr; + } + const auto idDates = parseAndApply( _owner->peer(peerId), story, diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp index 11e7b2f1b..9b02fa341 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp @@ -79,6 +79,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include #include +// AyuGram includes +#include "ayu/ayu_settings.h" + + namespace Dialogs { namespace { @@ -793,6 +797,13 @@ void Widget::setupMainMenuToggle() { } void Widget::setupStories() { + // AyuGram disableStories + const auto settings = &AyuSettings::getInstance(); + if (settings->disableStories) + { + return; + } + _stories->verticalScrollEvents( ) | rpl::start_with_next([=](not_null e) { _scroll->viewportEvent(e); diff --git a/Telegram/SourceFiles/info/info_top_bar.cpp b/Telegram/SourceFiles/info/info_top_bar.cpp index f15a6b549..9d8ee6324 100644 --- a/Telegram/SourceFiles/info/info_top_bar.cpp +++ b/Telegram/SourceFiles/info/info_top_bar.cpp @@ -35,6 +35,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_dialogs.h" #include "styles/style_info.h" +// AyuGram includes +#include "ayu/ayu_settings.h" + + namespace Info { TopBar::TopBar( @@ -453,6 +457,13 @@ void TopBar::updateControlsVisibility(anim::type animated) { } void TopBar::setStories(rpl::producer content) { + // AyuGram disableStories + const auto settings = &AyuSettings::getInstance(); + if (settings->disableStories) + { + return; + } + _storiesLifetime.destroy(); delete _storiesWrap.data(); if (content) {