From 3dcf5e12b1ffb8e57a7c1e1f3f1145c9bae477e8 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 21 Jan 2025 12:39:53 +0100 Subject: [PATCH] Change notifications from moderators to not be filtered (#33654) --- app/services/notify_service.rb | 18 ++++++++++-------- spec/services/notify_service_spec.rb | 10 ++++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index e87e5024fe..f820f969a6 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -34,6 +34,7 @@ class NotifyService < BaseService @sender = notification.from_account @notification = notification @policy = NotificationPolicy.find_or_initialize_by(account: @recipient) + @from_staff = @sender.local? && @sender.user.present? && @sender.user_role&.bypass_block?(@recipient.user_role) end private @@ -63,6 +64,14 @@ class NotifyService < BaseService @sender.silenced? && not_following? end + def message? + @notification.type == :mention + end + + def from_staff? + @from_staff + end + def private_mention_not_in_response? @notification.type == :mention && @notification.target_status.direct_visibility? && !response_to_recipient? end @@ -129,14 +138,6 @@ class NotifyService < BaseService FeedManager.instance.filter?(:mentions, @notification.target_status, @recipient) end - def message? - @notification.type == :mention - end - - def from_staff? - @sender.local? && @sender.user.present? && @sender.user_role&.bypass_block?(@recipient.user_role) - end - def from_self? @recipient.id == @sender.id end @@ -174,6 +175,7 @@ class NotifyService < BaseService def filter? return false unless filterable_type? return false if override_for_sender? + return false if message? && from_staff? filtered_by_limited_accounts_policy? || filtered_by_not_following_policy? || diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb index 935b94c709..9d9d4eed3d 100644 --- a/spec/services/notify_service_spec.rb +++ b/spec/services/notify_service_spec.rb @@ -319,6 +319,16 @@ RSpec.describe NotifyService do end end + context 'when sender is a moderator' do + let(:sender_role) { Fabricate(:user_role, highlighted: true, permissions: UserRole::FLAGS[:manage_users]) } + let(:sender) { Fabricate(:user, role: sender_role).account } + let(:activity) { Fabricate(:mention, status: Fabricate(:status, account: sender)) } + + it 'returns false' do + expect(subject.filter?).to be false + end + end + context 'when sender is followed by recipient' do before do notification.account.follow!(notification.from_account)