diff options
author | kaniini <nenolod@gmail.com> | 2019-01-10 02:31:29 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2019-01-10 02:31:29 +0000 |
commit | d203b0b4d3fdae60c5b61df7d239004735206e1c (patch) | |
tree | 0dc44f57a213f776600d1230a8e24fcf290f49ae /lib | |
parent | be92edcb29494d12896983a1dcb39ea8359d2c68 (diff) | |
parent | 04735db193978f05d2731878896fa70172f2fb11 (diff) | |
download | pleroma-d203b0b4d3fdae60c5b61df7d239004735206e1c.tar.gz |
Merge branch 'dm-optimizations' into 'develop'
Add activity visibility index.
See merge request pleroma/pleroma!646
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 4685f6d95..b8141146f 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -364,21 +364,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do @valid_visibilities ~w[direct unlisted public private] - defp restrict_visibility(query, %{visibility: "direct"}) do - public = "https://www.w3.org/ns/activitystreams#Public" + defp restrict_visibility(query, %{visibility: visibility}) + when visibility in @valid_visibilities do + query = + from( + a in query, + where: + fragment("activity_visibility(?, ?, ?) = ?", a.actor, a.recipients, a.data, ^visibility) + ) - from( - activity in query, - join: sender in User, - on: sender.ap_id == activity.actor, - # Are non-direct statuses with no to/cc possible? - where: - fragment( - "not (? && ?)", - [^public, sender.follower_address], - activity.recipients - ) - ) + Ecto.Adapters.SQL.to_sql(:all, Repo, query) + + query end defp restrict_visibility(_query, %{visibility: visibility}) |