diff --git a/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp b/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp index c93f8171c..24560472f 100644 --- a/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp +++ b/Telegram/SourceFiles/ayu/utils/telegram_helpers.cpp @@ -29,12 +29,14 @@ #include "data/data_session.h" #include "history/history.h" #include "history/history_item.h" +#include "history/history_item_components.h" #include "history/history_unread_things.h" #include "main/main_account.h" #include "main/main_session.h" #include "ui/text/format_values.h" #include "ayu/ayu_settings.h" +#include "ayu/ayu_state.h" // https://github.com/AyuGram/AyuGram4AX/blob/rewrite/TMessagesProj/src/main/java/com/radolyn/ayugram/AyuConstants.java std::unordered_set ayugram_channels = { @@ -160,6 +162,30 @@ bool isExteraRelated(ID peerId) { return extera_devs.contains(peerId) || extera_channels.contains(peerId); } +bool isMessageHidden(const not_null item) { + if (AyuState::isHidden(item)) { + return true; + } + + const auto settings = &AyuSettings::getInstance(); + if (settings->hideFromBlocked) { + if (item->from()->isUser() && + item->from()->asUser()->isBlocked()) { + return true; + } + + if (const auto forwarded = item->Get()) { + if (forwarded->originalSender && + forwarded->originalSender->isUser() && + forwarded->originalSender->asUser()->isBlocked()) { + return true; + } + } + } + + return false; +} + void MarkAsReadChatList(not_null list) { auto mark = std::vector>(); for (const auto &row : list->indexed()->all()) { diff --git a/Telegram/SourceFiles/ayu/utils/telegram_helpers.h b/Telegram/SourceFiles/ayu/utils/telegram_helpers.h index 7fca26cab..f530dcb6d 100644 --- a/Telegram/SourceFiles/ayu/utils/telegram_helpers.h +++ b/Telegram/SourceFiles/ayu/utils/telegram_helpers.h @@ -25,6 +25,8 @@ ID getBareID(not_null peer); bool isAyuGramRelated(ID peerId); bool isExteraRelated(ID peerId); +bool isMessageHidden(not_null item); + void MarkAsReadChatList(not_null list); void MarkAsReadThread(not_null thread); diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index 4a523dc0d..5d275fd74 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -68,6 +68,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL // AyuGram includes #include "ayu/ayu_settings.h" +#include "ayu/ayu_state.h" #include "ayu/features/messageshot/message_shot.h" #include "ayu/utils/telegram_helpers.h" @@ -3200,6 +3201,10 @@ MessageGroupId HistoryItem::groupId() const { } bool HistoryItem::isEmpty() const { + if (isMessageHidden(const_cast(this))) { + return true; + } + return _text.empty() && !_media && !Has(); diff --git a/Telegram/SourceFiles/history/view/history_view_element.cpp b/Telegram/SourceFiles/history/view/history_view_element.cpp index 5546b3361..7b85383ba 100644 --- a/Telegram/SourceFiles/history/view/history_view_element.cpp +++ b/Telegram/SourceFiles/history/view/history_view_element.cpp @@ -52,7 +52,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ayu/ayu_settings.h" #include "ayu/ayu_state.h" #include "ayu/features/messageshot/message_shot.h" - +#include "ayu/utils/telegram_helpers.h" namespace HistoryView { namespace { @@ -715,18 +715,7 @@ bool Element::isHiddenByGroup() const { } bool Element::isHidden() const { - if (AyuState::isHidden(data())) { - return true; - } - const auto settings = &AyuSettings::getInstance(); - if (settings->hideFromBlocked) { - if (data()->from()->isUser() && - data()->from()->asUser()->isBlocked()) { - return true; - } - } - - return isHiddenByGroup(); + return isMessageHidden(data()) || isHiddenByGroup(); } void Element::overrideMedia(std::unique_ptr media) { diff --git a/Telegram/SourceFiles/history/view/history_view_send_action.cpp b/Telegram/SourceFiles/history/view/history_view_send_action.cpp index 460941e6d..55957c5b2 100644 --- a/Telegram/SourceFiles/history/view/history_view_send_action.cpp +++ b/Telegram/SourceFiles/history/view/history_view_send_action.cpp @@ -20,6 +20,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/painter.h" #include "styles/style_dialogs.h" +// AyuGram includes +#include "ayu/ayu_settings.h" + + namespace HistoryView { namespace { @@ -63,6 +67,13 @@ bool SendActionPainter::updateNeedsAnimating( return false; } + const auto settings = &AyuSettings::getInstance(); + if (settings->hideFromBlocked) { + if (user->isBlocked()) { + return false; + } + } + const auto now = crl::now(); const auto emplaceAction = [&]( Type type, diff --git a/Telegram/SourceFiles/info/media/info_media_provider.cpp b/Telegram/SourceFiles/info/media/info_media_provider.cpp index 2fc69733e..738eb2c24 100644 --- a/Telegram/SourceFiles/info/media/info_media_provider.cpp +++ b/Telegram/SourceFiles/info/media/info_media_provider.cpp @@ -26,6 +26,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_info.h" #include "styles/style_overview.h" +// AyuGram includes +#include "ayu/ayu_settings.h" +#include "ayu/utils/telegram_helpers.h" + + namespace Info::Media { namespace { @@ -410,6 +415,11 @@ std::unique_ptr Provider::createLayout( if (!item) { return nullptr; } + + if (isMessageHidden(item)) { + return nullptr; + } + const auto getPhoto = [&]() -> PhotoData* { if (const auto media = item->media()) { return media->photo();