diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 406207f62..b85f8eb8a 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -136,8 +136,13 @@ def fetch_activities_for_context(context, opts \\ %{}) do end def fetch_public_activities(opts \\ %{}) do - public = ["https://www.w3.org/ns/activitystreams#Public"] - fetch_activities(public, opts) + public = %{to: ["https://www.w3.org/ns/activitystreams#Public"]} + q = fetch_activities_query([], opts) + q = from activity in q, + where: fragment(~s(? @> ?), activity.data, ^public) + q + |> Repo.all + |> Enum.reverse end defp restrict_since(query, %{"since_id" => since_id}) do @@ -215,7 +220,7 @@ defp restrict_blocked(query, %{"blocking_user" => %User{info: info}}) do end defp restrict_blocked(query, _), do: query - def fetch_activities(recipients, opts \\ %{}) do + def fetch_activities_query(recipients, opts \\ %{}) do base_query = from activity in Activity, limit: 20, order_by: [fragment("? desc nulls last", activity.id)] @@ -232,6 +237,10 @@ def fetch_activities(recipients, opts \\ %{}) do |> restrict_recent(opts) |> restrict_blocked(opts) |> restrict_media(opts) + end + + def fetch_activities(recipients, opts \\ %{}) do + fetch_activities_query(recipients, opts) |> Repo.all |> Enum.reverse end