logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 03d89e182e0323f775232a4ddab66615f39dc765
parent: 638f772356afdb92a722ae54059604dbbab94d58
Author: kaniini <ariadne@dereferenced.org>
Date:   Tue, 23 Jul 2019 19:13:55 +0000

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

Diffstat:

Mlib/pleroma/web/common_api/utils.ex7+++++++
Mtest/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 @@ -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 @@ -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