summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2021-12-06 19:55:52 +0000
committerlain <lain@soykaf.club>2021-12-06 19:55:52 +0000
commitab60c0c6c2145df145a71f6786bd087ea8304596 (patch)
tree07c7df63813137c646986f341eb1532beafadc09
parent5c573a8a282725a9f2595fa264d794870a832a8a (diff)
parentdb46913dcc01e6d5a274f7c82eef44c304d52244 (diff)
Merge branch 'optimisation/deactivated-subquery' into 'develop'
Make deactivated user check into a subquery Closes #2792 See merge request pleroma/pleroma!3554
-rw-r--r--lib/pleroma/activity.ex6
-rw-r--r--test/pleroma/web/activity_pub/activity_pub_test.exs14
2 files changed, 16 insertions, 4 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index b88f74f47..4106feef6 100644
--- a/lib/pleroma/activity.ex
+++ b/lib/pleroma/activity.ex
@@ -362,11 +362,9 @@ defmodule Pleroma.Activity do
end
def restrict_deactivated_users(query) do
- deactivated_users =
- from(u in User.Query.build(%{deactivated: true}), select: u.ap_id)
- |> Repo.all()
+ deactivated_users_query = from(u in User.Query.build(%{deactivated: true}), select: u.ap_id)
- 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..574ef0d71 100644
--- a/test/pleroma/web/activity_pub/activity_pub_test.exs
+++ b/test/pleroma/web/activity_pub/activity_pub_test.exs
@@ -776,6 +776,20 @@ 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)