commit: cd8bdbc761d950587a189bded2dcb02f6247f16d
parent 5c573a8a282725a9f2595fa264d794870a832a8a
Author: FloatingGhost <hannah@coffee-and-dreams.uk>
Date: Mon, 6 Dec 2021 11:44:17 +0000
Make deactivated user check into a subquery
Fixes #2792
Diffstat:
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
@@ -362,11 +362,10 @@ defmodule Pleroma.Activity do
end
def restrict_deactivated_users(query) do
- deactivated_users =
+ deactivated_users_query =
from(u in User.Query.build(%{deactivated: true}), select: u.ap_id)
- |> Repo.all()
- Activity.Queries.exclude_authors(query, deactivated_users)
+ from(activity in query, where: activity.actor not in subquery(deactivated_users_query))
end
defdelegate search(user, query, options \\ []), to: Pleroma.Activity.Search
diff --git a/test/pleroma/web/activity_pub/activity_pub_test.exs b/test/pleroma/web/activity_pub/activity_pub_test.exs
@@ -776,6 +776,21 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
assert Enum.member?(activities, activity_one)
end
+ test "doesn't return activities from deactivated users" do
+ _user = insert(:user)
+ deactivated = insert(:user)
+ active = insert(:user)
+ {:ok, activity_one} = CommonAPI.post(deactivated, %{status: "hey!"})
+ {:ok, activity_two} = CommonAPI.post(active, %{status: "yay!"})
+ {:ok, _updated_user} = User.set_activation(deactivated, false)
+
+ activities = ActivityPub.fetch_activities([], %{})
+
+ refute Enum.member?(activities, activity_one)
+ assert Enum.member?(activities, activity_two)
+ end
+
+
test "always see your own posts even when they address people you block" do
user = insert(:user)
blockee = insert(:user)