forked from AkkomaGang/akkoma
activitypub: fix filtering of boosts from blocked users
This commit is contained in:
parent
8c65b69d4a
commit
36f78c6dcd
2 changed files with 29 additions and 0 deletions
|
@ -713,6 +713,13 @@ defp restrict_blocked(query, %{"blocking_user" => %User{info: info}}) do
|
||||||
activity in query,
|
activity in query,
|
||||||
where: fragment("not (? = ANY(?))", activity.actor, ^blocks),
|
where: fragment("not (? = ANY(?))", activity.actor, ^blocks),
|
||||||
where: fragment("not (? && ?)", activity.recipients, ^blocks),
|
where: fragment("not (? && ?)", activity.recipients, ^blocks),
|
||||||
|
where:
|
||||||
|
fragment(
|
||||||
|
"not (?->>'type' = 'Announce' and ?->'to' \\?| ?)",
|
||||||
|
activity.data,
|
||||||
|
activity.data,
|
||||||
|
^blocks
|
||||||
|
),
|
||||||
where: fragment("not (split_part(?, '/', 3) = ANY(?))", activity.actor, ^domain_blocks)
|
where: fragment("not (split_part(?, '/', 3) = ANY(?))", activity.actor, ^domain_blocks)
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
|
@ -364,6 +364,28 @@ test "doesn't return transitive interactions concerning blocked users" do
|
||||||
refute Enum.member?(activities, activity_four)
|
refute Enum.member?(activities, activity_four)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "doesn't return announce activities concerning blocked users" do
|
||||||
|
blocker = insert(:user)
|
||||||
|
blockee = insert(:user)
|
||||||
|
friend = insert(:user)
|
||||||
|
|
||||||
|
{:ok, blocker} = User.block(blocker, blockee)
|
||||||
|
|
||||||
|
{:ok, activity_one} = CommonAPI.post(friend, %{"status" => "hey!"})
|
||||||
|
|
||||||
|
{:ok, activity_two} = CommonAPI.post(blockee, %{"status" => "hey! @#{friend.nickname}"})
|
||||||
|
|
||||||
|
{:ok, activity_three, _} = CommonAPI.repeat(activity_two.id, friend)
|
||||||
|
|
||||||
|
activities =
|
||||||
|
ActivityPub.fetch_activities([], %{"blocking_user" => blocker})
|
||||||
|
|> Enum.map(fn act -> act.id end)
|
||||||
|
|
||||||
|
assert Enum.member?(activities, activity_one.id)
|
||||||
|
refute Enum.member?(activities, activity_two.id)
|
||||||
|
refute Enum.member?(activities, activity_three.id)
|
||||||
|
end
|
||||||
|
|
||||||
test "doesn't return muted activities" do
|
test "doesn't return muted activities" do
|
||||||
activity_one = insert(:note_activity)
|
activity_one = insert(:note_activity)
|
||||||
activity_two = insert(:note_activity)
|
activity_two = insert(:note_activity)
|
||||||
|
|
Loading…
Reference in a new issue