Restrict public by recipients.

This is much faster than going through the json. This does break
unlisted, for which we'll probably have to add another table field.
This commit is contained in:
lain 2018-02-26 10:09:30 +01:00
parent a17ba0ee0d
commit 1377b2e569

View file

@ -155,11 +155,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
Repo.all(query) Repo.all(query)
end end
# TODO: Make this work properly with unlisted.
def fetch_public_activities(opts \\ %{}) do def fetch_public_activities(opts \\ %{}) do
public = %{to: ["https://www.w3.org/ns/activitystreams#Public"]} q = fetch_activities_query(["https://www.w3.org/ns/activitystreams#Public"], opts)
q = fetch_activities_query([], opts)
q = from activity in q,
where: fragment(~s(? @> ?), activity.data, ^public)
q q
|> Repo.all |> Repo.all
|> Enum.reverse |> Enum.reverse