Merge branch 'kaniini/pleroma-bugfix/unlisted-statuses' into develop

This commit is contained in:
lain 2018-05-13 11:19:08 +02:00
commit 7e9f14bf3c
2 changed files with 23 additions and 1 deletions

View File

@ -211,11 +211,11 @@ def fetch_activities_for_context(context, opts \\ %{}) 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
q = fetch_activities_query(["https://www.w3.org/ns/activitystreams#Public"], opts) q = fetch_activities_query(["https://www.w3.org/ns/activitystreams#Public"], opts)
q q
|> restrict_unlisted()
|> Repo.all() |> Repo.all()
|> Enum.reverse() |> Enum.reverse()
end end
@ -322,6 +322,18 @@ defp restrict_blocked(query, %{"blocking_user" => %User{info: info}}) do
defp restrict_blocked(query, _), do: query defp restrict_blocked(query, _), do: query
defp restrict_unlisted(query) do
from(
activity in query,
where:
fragment(
"(?->'to' \\?| ?)",
activity.data,
^["https://www.w3.org/ns/activitystreams#Public"]
)
)
end
def fetch_activities_query(recipients, opts \\ %{}) do def fetch_activities_query(recipients, opts \\ %{}) do
base_query = base_query =
from( from(

View File

@ -171,6 +171,16 @@ test "doesn't return blocked activities" do
end end
describe "public fetch activities" do describe "public fetch activities" do
test "doesn't retrieve unlisted activities" do
user = insert(:user)
{:ok, unlisted_activity} = CommonAPI.post(user, %{"status" => "yeah", "visibility" => "unlisted"})
{:ok, listed_activity} = CommonAPI.post(user, %{"status" => "yeah"})
[activity] = ActivityPub.fetch_public_activities()
assert activity == listed_activity
end
test "retrieves public activities" do test "retrieves public activities" do
_activities = ActivityPub.fetch_public_activities() _activities = ActivityPub.fetch_public_activities()