logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
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:

Mlib/pleroma/activity.ex5++---
Mtest/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 @@ -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)