summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFloatingGhost <hannah@coffee-and-dreams.uk>2021-12-06 11:44:17 +0000
committerFloatingGhost <hannah@coffee-and-dreams.uk>2021-12-06 11:44:17 +0000
commitcd8bdbc761d950587a189bded2dcb02f6247f16d (patch)
tree9c9d83d48674e0981b50fba81395ccf1e062172f
parent5c573a8a282725a9f2595fa264d794870a832a8a (diff)
Make deactivated user check into a subquery
Fixes #2792
-rw-r--r--lib/pleroma/activity.ex5
-rw-r--r--test/pleroma/web/activity_pub/activity_pub_test.exs15
2 files changed, 17 insertions, 3 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index b88f74f47..c84e96aa2 100644
--- 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
index a61244c76..b57e87247 100644
--- 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)