aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2019-01-10 02:31:29 +0000
committerkaniini <nenolod@gmail.com>2019-01-10 02:31:29 +0000
commitd203b0b4d3fdae60c5b61df7d239004735206e1c (patch)
tree0dc44f57a213f776600d1230a8e24fcf290f49ae /lib
parentbe92edcb29494d12896983a1dcb39ea8359d2c68 (diff)
parent04735db193978f05d2731878896fa70172f2fb11 (diff)
downloadpleroma-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.ex25
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})