mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
fix: hide reactions from blocked peers
This commit is contained in:
@@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
|
||||
// AyuGram includes
|
||||
#include "ayu/ayu_settings.h"
|
||||
#include "ayu/features/filters/filters_controller.h"
|
||||
|
||||
|
||||
namespace Api {
|
||||
@@ -445,6 +446,8 @@ bool UpdateUserpics(
|
||||
};
|
||||
}) | ranges::views::filter([](ResolvedPeer resolved) {
|
||||
return resolved.peer != nullptr;
|
||||
}) | ranges::views::filter([](const ResolvedPeer &resolved) {
|
||||
return !FiltersController::isBlocked(resolved.peer);
|
||||
}) | ranges::to_vector;
|
||||
|
||||
const auto same = ranges::equal(
|
||||
@@ -605,9 +608,29 @@ rpl::producer<Ui::WhoReadContent> WhoReacted(
|
||||
});
|
||||
return;
|
||||
}
|
||||
auto &owner = item->history()->owner();
|
||||
auto blockedReactionsCount = 0;
|
||||
const auto &settings = AyuSettings::getInstance();
|
||||
if (settings.filtersEnabled()) {
|
||||
peers.list.erase(ranges::remove_if(peers.list, [&](const PeerWithReaction &p) {
|
||||
const auto peer = owner.peerLoaded(p.peerWithDate.peer);
|
||||
if (peer && FiltersController::isBlocked(peer)) {
|
||||
if (!p.reaction.empty()) {
|
||||
++blockedReactionsCount;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}), end(peers.list));
|
||||
peers.read.erase(ranges::remove_if(peers.read, [&](const WhoReadPeer &p) {
|
||||
const auto peer = owner.peerLoaded(p.peer);
|
||||
return peer && FiltersController::isBlocked(peer);
|
||||
}), end(peers.read));
|
||||
}
|
||||
|
||||
state->current.state = peers.state;
|
||||
state->current.fullReadCount = int(peers.read.size());
|
||||
state->current.fullReactionsCount = peers.fullReactionsCount;
|
||||
state->current.fullReactionsCount = peers.fullReactionsCount - blockedReactionsCount;
|
||||
if (whoReadIds) {
|
||||
const auto reacted = peers.list.size() - ranges::count(
|
||||
peers.list,
|
||||
|
||||
@@ -113,6 +113,15 @@ bool isBlocked(const not_null<HistoryItem*> item) {
|
||||
);
|
||||
}
|
||||
|
||||
bool isBlocked(const not_null<PeerData*> peer) {
|
||||
const auto &settings = AyuSettings::getInstance();
|
||||
return settings.filtersEnabled() &&
|
||||
(
|
||||
(peer->isUser() && peer->asUser()->isBlocked() && settings.hideFromBlocked()) ||
|
||||
((peer->isUser() || peer->isBroadcast()) && settings.isShadowBanned(getDialogIdFromPeer(peer)))
|
||||
);
|
||||
}
|
||||
|
||||
bool filtered(const not_null<HistoryItem*> item) {
|
||||
const auto &settings = AyuSettings::getInstance();
|
||||
if (!settings.filtersEnabled()) {
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace FiltersController {
|
||||
|
||||
bool isEnabled(PeerData *peer);
|
||||
bool isBlocked(not_null<HistoryItem*> item);
|
||||
bool isBlocked(not_null<PeerData*> peer);
|
||||
bool filtered(not_null<HistoryItem*> historyItem);
|
||||
|
||||
void invalidate(not_null<HistoryItem*> item);
|
||||
|
||||
@@ -22,6 +22,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
|
||||
// AyuGram includes
|
||||
#include "ayu/ayu_settings.h"
|
||||
#include "ayu/features/filters/filters_controller.h"
|
||||
|
||||
|
||||
namespace HistoryView {
|
||||
namespace {
|
||||
@@ -66,13 +68,7 @@ bool SendActionPainter::updateNeedsAnimating(
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto &settings = AyuSettings::getInstance();
|
||||
if (settings.hideFromBlocked()) {
|
||||
if (user->isBlocked()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (AyuSettings::getInstance().isShadowBanned(user->id.value & PeerId::kChatTypeMask)) {
|
||||
if (FiltersController::isBlocked(user)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "ayu/ayu_settings.h"
|
||||
#include "ayu/features/message_shot/message_shot.h"
|
||||
#include "ayu/ui/ayu_userpic.h"
|
||||
#include "ayu/features/filters/filters_controller.h"
|
||||
|
||||
|
||||
namespace HistoryView::Reactions {
|
||||
@@ -931,6 +932,13 @@ InlineListData InlineListDataFromMessage(not_null<Element*> view) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (AyuSettings::getInstance().filtersEnabled()) {
|
||||
for (auto &[id, peers] : result.recent) {
|
||||
peers.erase(ranges::remove_if(peers, [](not_null<PeerData*> peer) {
|
||||
return FiltersController::isBlocked(peer);
|
||||
}), end(peers));
|
||||
}
|
||||
}
|
||||
result.flags = (view->hasOutLayout() ? Flag::OutLayout : Flag())
|
||||
| (view->embedReactionsInBubble() ? Flag::InBubble : Flag())
|
||||
| (item->reactionsAreTags() ? Flag::Tags : Flag())
|
||||
|
||||
Reference in New Issue
Block a user