aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaniini <ariadne@dereferenced.org>2019-07-23 19:13:55 +0000
committerkaniini <ariadne@dereferenced.org>2019-07-23 19:13:55 +0000
commit03d89e182e0323f775232a4ddab66615f39dc765 (patch)
tree48a28b791485eef83f847c83f15f870150eb8308
parent638f772356afdb92a722ae54059604dbbab94d58 (diff)
parentec7b085b76996bee7eaa60c21b9d8a0cba382a65 (diff)
downloadpleroma-03d89e182e0323f775232a4ddab66615f39dc765.tar.gz
Merge branch 'fix/subscriber-notifications' into 'develop'
Do not notify subscribers for messages from users which are replies to others See merge request pleroma/pleroma!1477
-rw-r--r--lib/pleroma/web/common_api/utils.ex7
-rw-r--r--test/notification_test.exs22
2 files changed, 29 insertions, 0 deletions
diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex
index fcc000969..94462c3dd 100644
--- a/lib/pleroma/web/common_api/utils.ex
+++ b/lib/pleroma/web/common_api/utils.ex
@@ -439,6 +439,13 @@ defmodule Pleroma.Web.CommonAPI.Utils do
def maybe_notify_mentioned_recipients(recipients, _), do: recipients
+ # Do not notify subscribers if author is making a reply
+ def maybe_notify_subscribers(recipients, %Activity{
+ object: %Object{data: %{"inReplyTo" => _ap_id}}
+ }) do
+ recipients
+ end
+
def maybe_notify_subscribers(
recipients,
%Activity{data: %{"actor" => actor, "type" => type}} = activity
diff --git a/test/notification_test.exs b/test/notification_test.exs
index dda570b49..28f8df49d 100644
--- a/test/notification_test.exs
+++ b/test/notification_test.exs
@@ -42,6 +42,28 @@ defmodule Pleroma.NotificationTest do
assert notification.user_id == subscriber.id
end
+
+ test "does not create a notification for subscribed users if status is a reply" do
+ user = insert(:user)
+ other_user = insert(:user)
+ subscriber = insert(:user)
+
+ User.subscribe(subscriber, other_user)
+
+ {:ok, activity} = CommonAPI.post(user, %{"status" => "test post"})
+
+ {:ok, _reply_activity} =
+ CommonAPI.post(other_user, %{
+ "status" => "test reply",
+ "in_reply_to_status_id" => activity.id
+ })
+
+ user_notifications = Notification.for_user(user)
+ assert length(user_notifications) == 1
+
+ subscriber_notifications = Notification.for_user(subscriber)
+ assert Enum.empty?(subscriber_notifications)
+ end
end
describe "create_notification" do