Skip to content
Extraits de code Groupes Projets
Valider e56404be rédigé par Renato "Lond" Cerqueira's avatar Renato "Lond" Cerqueira Validation de Eugen Rochko
Parcourir les fichiers

When must_be_following_dm is on, only notify if recipient dm'ed user (#6283)

* When must_be_following_dm is on, only notify if recipient dm'ed user
Currently, when must_be_following_dm is on, if a user sends a direct
message replying to any status from the recipient, the recipient gets a
notification. This should not be the case, as if the recipient posted
something publicly this can be used to spam their notifications.

* Refactor replied_to_status_is_direct_message?
Following suggestion in PR
parent 7badad77
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -54,7 +54,7 @@ class NotifyService < BaseService ...@@ -54,7 +54,7 @@ class NotifyService < BaseService
end end
def response_to_recipient? def response_to_recipient?
@notification.target_status.in_reply_to_account_id == @recipient.id @notification.target_status.in_reply_to_account_id == @recipient.id && @notification.target_status.thread&.direct_visibility?
end end
def optional_non_following_and_direct? def optional_non_following_and_direct?
......
...@@ -62,10 +62,19 @@ RSpec.describe NotifyService do ...@@ -62,10 +62,19 @@ RSpec.describe NotifyService do
is_expected.to_not change(Notification, :count) is_expected.to_not change(Notification, :count)
end end
context 'if the message chain initiated by recipient' do context 'if the message chain initiated by recipient, but is not direct message' do
let(:reply_to) { Fabricate(:status, account: recipient) } let(:reply_to) { Fabricate(:status, account: recipient) }
let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender, visibility: :direct, thread: reply_to)) } let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender, visibility: :direct, thread: reply_to)) }
it 'does not notify' do
is_expected.to_not change(Notification, :count)
end
end
context 'if the message chain initiated by recipient and is direct message' do
let(:reply_to) { Fabricate(:status, account: recipient, visibility: :direct) }
let(:activity) { Fabricate(:mention, account: recipient, status: Fabricate(:status, account: sender, visibility: :direct, thread: reply_to)) }
it 'does notify' do it 'does notify' do
is_expected.to change(Notification, :count) is_expected.to change(Notification, :count)
end end
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter