diff --git a/Telegram/SourceFiles/api/api_polls.cpp b/Telegram/SourceFiles/api/api_polls.cpp index 227b6e9db..71d44119d 100644 --- a/Telegram/SourceFiles/api/api_polls.cpp +++ b/Telegram/SourceFiles/api/api_polls.cpp @@ -20,6 +20,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/history_item_helpers.h" // ShouldSendSilent #include "main/main_session.h" +// AyuGram includes +#include "ayu/ayu_state.h" + + namespace Api { namespace { @@ -148,6 +152,13 @@ void Polls::sendVotes( _pollVotesRequestIds.erase(itemId); hideSending(); _session->updates().applyUpdates(result); + + const auto settings = &AyuSettings::getInstance(); + if (!settings->sendReadMessages && settings->markReadAfterPoll && item) + { + AyuState::setAllowSendReadPacket(true); + item->history()->session().data().histories().readInboxOnNewMessage(item); + } }).fail([=] { _pollVotesRequestIds.erase(itemId); hideSending(); diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index 4cd31254d..d10fd1825 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -210,6 +210,16 @@ void AyuGramSettings::set_markReadAfterSend(bool val) markReadAfterSend = val; } +void AyuGramSettings::set_markReadAfterReaction(bool val) +{ + markReadAfterReaction = val; +} + +void AyuGramSettings::set_markReadAfterPoll(bool val) +{ + markReadAfterPoll = val; +} + void AyuGramSettings::set_useScheduledMessages(bool val) { useScheduledMessages = val; diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index 7328b78cd..70fd33871 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -87,6 +87,8 @@ public: bool sendUploadProgress; bool sendOfflinePacketAfterOnline; bool markReadAfterSend; + bool markReadAfterReaction; + bool markReadAfterPoll; bool useScheduledMessages; bool saveDeletedMessages; bool saveMessagesHistory; @@ -124,6 +126,10 @@ public: void set_markReadAfterSend(bool val); + void set_markReadAfterReaction(bool val); + + void set_markReadAfterPoll(bool val); + void set_useScheduledMessages(bool val); void set_keepDeletedMessages(bool val); @@ -175,6 +181,8 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT( sendUploadProgress, sendOfflinePacketAfterOnline, markReadAfterSend, + markReadAfterReaction, + markReadAfterPoll, useScheduledMessages, saveDeletedMessages, saveMessagesHistory, diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp index f675ea4b8..f97cfb3d2 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp @@ -69,6 +69,7 @@ not_null AddInnerToggle( not_null *> wrap, rpl::producer buttonLabel, std::optional locked, + bool toggledWhenAll, Settings::IconDescriptor &&icon) { const auto button = container->add(object_ptr( @@ -165,8 +166,14 @@ not_null AddInnerToggle( rpl::empty_value() ) | rpl::map(countChecked) | start_with_next([=](int count) { - checkView->setChecked(count == totalInnerChecks, - anim::type::normal); + if (toggledWhenAll) { + checkView->setChecked(count == totalInnerChecks, + anim::type::normal); + } + else { + checkView->setChecked(count != 0, + anim::type::normal); + } }, toggleButton->lifetime()); checkView->setLocked(locked.has_value()); checkView->finishAnimating(); @@ -470,6 +477,7 @@ void Ayu::SetupGhostModeToggle(not_null container) raw, tr::ayu_GhostModeToggle(), std::nullopt, + true, {}); container->add(std::move(wrap)); container->widthValue( @@ -545,24 +553,24 @@ void Ayu::SetupReadAfterActionToggle(not_null container) std::vector checkboxes{ NestedEntry{ - tr::ayu_MarkReadAfterSend(tr::now), false, [=](bool enabled) + tr::ayu_MarkReadAfterSend(tr::now), settings->markReadAfterSend, [=](bool enabled) { -// settings->set_sendReadMessages(!enabled); -// AyuSettings::save(); + settings->set_markReadAfterSend(enabled); + AyuSettings::save(); } }, NestedEntry{ - tr::ayu_MarkReadAfterReaction(tr::now), false, [=](bool enabled) + tr::ayu_MarkReadAfterReaction(tr::now), settings->markReadAfterReaction, [=](bool enabled) { -// settings->set_sendReadStories(!enabled); -// AyuSettings::save(); + settings->set_markReadAfterReaction(enabled); + AyuSettings::save(); } }, NestedEntry{ - tr::ayu_MarkReadAfterPoll(tr::now), false, [=](bool enabled) + tr::ayu_MarkReadAfterPoll(tr::now), settings->markReadAfterPoll, [=](bool enabled) { -// settings->set_sendOnlinePackets(!enabled); -// AyuSettings::save(); + settings->set_markReadAfterPoll(enabled); + AyuSettings::save(); } }, }; @@ -591,6 +599,7 @@ void Ayu::SetupReadAfterActionToggle(not_null container) raw, tr::ayu_MarkReadAfterAction(), std::nullopt, + false, {}); container->add(std::move(wrap)); container->widthValue( diff --git a/Telegram/SourceFiles/data/data_message_reactions.cpp b/Telegram/SourceFiles/data/data_message_reactions.cpp index 7aa820101..84f3f8f6c 100644 --- a/Telegram/SourceFiles/data/data_message_reactions.cpp +++ b/Telegram/SourceFiles/data/data_message_reactions.cpp @@ -30,6 +30,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "apiwrap.h" #include "styles/style_chat.h" +// AyuGram includes +#include "ayu/ayu_state.h" + + namespace Data { namespace { @@ -821,6 +825,13 @@ void Reactions::send(not_null item, bool addToRecent) { )).done([=](const MTPUpdates &result) { _sentRequests.remove(id); _owner->session().api().applyUpdates(result); + + const auto settings = &AyuSettings::getInstance(); + if (!settings->sendReadMessages && settings->markReadAfterReaction && item) + { + AyuState::setAllowSendReadPacket(true); + item->history()->session().data().histories().readInboxOnNewMessage(item); + } }).fail([=](const MTP::Error &error) { _sentRequests.remove(id); }).send();