Fix broken notifications for mentions from local moderators in 4.2.11 (#31484)

This commit is contained in:
Claire 2024-08-19 09:52:32 +02:00 committed by GitHub
parent a02ff33f0e
commit d675803f07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 12 additions and 1 deletions

View file

@ -87,7 +87,7 @@ class NotifyService < BaseService
def from_staff? def from_staff?
sender = @notification.from_account sender = @notification.from_account
sender.local? && sender.user.present? && sender.user_role&.overrides?(@recipient.user_role) && @sender.user_role&.highlighted? && sender.user_role&.can?(*UserRole::Flags::CATEGORIES[:moderation]) sender.local? && sender.user.present? && sender.user_role&.overrides?(@recipient.user_role) && sender.user_role&.highlighted? && sender.user_role&.can?(*UserRole::Flags::CATEGORIES[:moderation].map(&:to_sym))
end end
def optional_non_following_and_direct? def optional_non_following_and_direct?

View file

@ -18,6 +18,17 @@ RSpec.describe NotifyService, type: :service do
expect { subject }.to_not change(Notification, :count) expect { subject }.to_not change(Notification, :count)
end end
context 'when the sender is a local moderator' do
let(:sender) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:type) { :mention }
let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender)) }
it 'does notify when the sender is blocked' do
recipient.block!(sender)
expect { subject }.to change(Notification, :count).by(1)
end
end
it 'does not notify when sender is muted with hide_notifications' do it 'does not notify when sender is muted with hide_notifications' do
recipient.mute!(sender, notifications: true) recipient.mute!(sender, notifications: true)
expect { subject }.to_not change(Notification, :count) expect { subject }.to_not change(Notification, :count)