Merge pull request 'Notifications: do not crash on posts without content when filters exist' (#8023) from lambadalambda/pleroma:fix/notification-filter-nil-content into develop

Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/8023
This commit is contained in:
lain 2026-10-27 12:36:46 +00:00
commit 539db4b978
3 changed files with 21 additions and 0 deletions

View file

@ -0,0 +1 @@
Do not crash when creating notifications for posts without content while the user has filters

View file

@ -821,6 +821,9 @@ defmodule Pleroma.Notification do
object.data["actor"] == user.ap_id ->
false
not is_binary(object.data["content"]) ->
false
not is_nil(regex = Pleroma.Filter.compose_regex(user, :re)) ->
Regex.match?(regex, object.data["content"])

View file

@ -9,6 +9,7 @@ defmodule Pleroma.NotificationTest do
alias Pleroma.FollowingRelationship
alias Pleroma.Notification
alias Pleroma.Object
alias Pleroma.Repo
alias Pleroma.Tests.ObanHelpers
alias Pleroma.User
@ -276,6 +277,22 @@ defmodule Pleroma.NotificationTest do
assert {:ok, []} == Notification.create_notifications(status)
end
test "it creates notifications for objects without content when the user has filters" do
author = insert(:user)
user = insert(:user)
insert(:filter, user: user, phrase: "cofe", hide: true)
{:ok, status} = CommonAPI.post(author, %{status: "hey @#{user.nickname}"})
object = Object.normalize(status, fetch: false)
{:ok, _} =
object
|> Object.change(%{data: Map.delete(object.data, "content")})
|> Object.update_and_set_cache()
assert {:ok, [_]} = Notification.create_notifications(Pleroma.Activity.get_by_id(status.id))
end
test "it creates notifications if content matches with a not irreversible filter" do
user = insert(:user)
subscriber = insert(:user)