aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/notification.ex8
-rw-r--r--test/notification_test.exs11
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index 35f817d1d..00a382f31 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -46,9 +46,11 @@ defmodule Pleroma.Notification do
# TODO move to sql, too.
def create_notification(%Activity{} = activity, %User{} = user) do
- notification = %Notification{user_id: user.id, activity_id: activity.id}
- {:ok, notification} = Repo.insert(notification)
- notification
+ unless User.blocks?(user, %{ap_id: activity.data["actor"]}) do
+ notification = %Notification{user_id: user.id, activity_id: activity.id}
+ {:ok, notification} = Repo.insert(notification)
+ notification
+ end
end
end
diff --git a/test/notification_test.exs b/test/notification_test.exs
index f50b3cb24..77fdb532f 100644
--- a/test/notification_test.exs
+++ b/test/notification_test.exs
@@ -20,4 +20,15 @@ defmodule Pleroma.NotificationTest do
assert other_notification.activity_id == activity.id
end
end
+
+ describe "create_notification" do
+ test "it doesn't create a notification for user if the user blocks the activity author" do
+ activity = insert(:note_activity)
+ author = User.get_by_ap_id(activity.data["actor"])
+ user = insert(:user)
+ {:ok, user} = User.block(user, author)
+
+ assert nil == Notification.create_notification(activity, user)
+ end
+ end
end