commit: 7abb248cebaa10edfad34f304eb929d654956a54
parent 00b39dea5d33a4595af1b63148b39c2bf335d4bc
Author: lain <lain@soykaf.club>
Date: Thu, 9 Feb 2023 19:54:59 +0000
Merge branch 'notification-content-filtering-noobj' into 'develop'
Require related object for content-filtering on notification
See merge request pleroma/pleroma!3837
Diffstat:
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
@@ -178,6 +178,7 @@ defmodule Pleroma.Notification do
from([_n, a, o] in query,
where:
fragment("not(?->>'content' ~* ?)", o.data, ^regex) or
+ fragment("?->>'content' is null", o.data) or
fragment("?->>'actor' = ?", o.data, ^user.ap_id)
)
end
diff --git a/test/pleroma/notification_test.exs b/test/pleroma/notification_test.exs
@@ -1251,5 +1251,32 @@ defmodule Pleroma.NotificationTest do
assert length(Notification.for_user(user)) == 1
end
+
+ test "it returns notifications when related object is without content and filters are defined",
+ %{user: user} do
+ followed_user = insert(:user, is_locked: true)
+
+ insert(:filter, user: followed_user, phrase: "test", hide: true)
+
+ {:ok, _, _, _activity} = CommonAPI.follow(user, followed_user)
+ refute FollowingRelationship.following?(user, followed_user)
+ assert [notification] = Notification.for_user(followed_user)
+
+ assert %{type: "follow_request"} =
+ NotificationView.render("show.json", %{
+ notification: notification,
+ for: followed_user
+ })
+
+ assert {:ok, _} = CommonAPI.accept_follow_request(user, followed_user)
+
+ assert [notification] = Notification.for_user(followed_user)
+
+ assert %{type: "follow"} =
+ NotificationView.render("show.json", %{
+ notification: notification,
+ for: followed_user
+ })
+ end
end
end