summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-06-02 08:50:24 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-06-02 09:00:10 +0300
commit19f468c5bc230d6790b00aa87e509a07e709aaa7 (patch)
tree26a4c7e3b3ea0a5e6da1bc6a2fbd3e257b1d9a9d /lib
parent7e6ec778d965419ed4083428d4d39b2a689f7619 (diff)
downloadpleroma-19f468c5bc230d6790b00aa87e509a07e709aaa7.tar.gz
pleroma-19f468c5bc230d6790b00aa87e509a07e709aaa7.zip
replies filtering for blocked domains
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex33
-rw-r--r--lib/pleroma/web/api_spec/operations/timeline_operation.ex7
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex13
3 files changed, 8 insertions, 45 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index e7958f7a8..673b10b22 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -932,39 +932,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
query =
if has_named_binding?(query, :object), do: query, else: Activity.with_joined_object(query)
- # TODO: update after benchmarks
- query =
- case opts[:method] do
- :fun ->
- from(a in query,
- where:
- fragment(
- "recipients_contain_blocked_domains(?, ?) = false",
- a.recipients,
- ^domain_blocks
- )
- )
-
- :unnest ->
- from(a in query,
- where:
- fragment(
- "NOT ? && (SELECT ARRAY(SELECT split_part(UNNEST(?), '/', 3)))",
- ^domain_blocks,
- a.recipients
- )
- )
-
- _ ->
- query
- end
-
from(
[activity, object: o] in query,
where: fragment("not (? = ANY(?))", activity.actor, ^blocked_ap_ids),
where: fragment("not (? && ?)", activity.recipients, ^blocked_ap_ids),
where:
fragment(
+ "recipients_contain_blocked_domains(?, ?) = false",
+ activity.recipients,
+ ^domain_blocks
+ ),
+ where:
+ fragment(
"not (?->>'type' = 'Announce' and ?->'to' \\?| ?)",
activity.data,
activity.data,
diff --git a/lib/pleroma/web/api_spec/operations/timeline_operation.ex b/lib/pleroma/web/api_spec/operations/timeline_operation.ex
index 375b441a1..8e19bace7 100644
--- a/lib/pleroma/web/api_spec/operations/timeline_operation.ex
+++ b/lib/pleroma/web/api_spec/operations/timeline_operation.ex
@@ -62,13 +62,6 @@ defmodule Pleroma.Web.ApiSpec.TimelineOperation do
only_media_param(),
with_muted_param(),
exclude_visibilities_param(),
- # TODO: remove after benchmarks
- Operation.parameter(
- :method,
- :query,
- %Schema{type: :string},
- "Temp parameter"
- ),
reply_visibility_param() | pagination_params()
],
operationId: "TimelineController.public",
diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex
index 1734df4b5..958567510 100644
--- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex
@@ -109,23 +109,14 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do
if restrict? and is_nil(user) do
render_error(conn, :unauthorized, "authorization required for timeline view")
else
- # TODO: return back after benchmarks
- params =
+ activities =
params
|> Map.put("type", ["Create", "Announce"])
|> Map.put("local_only", local_only)
|> Map.put("blocking_user", user)
|> Map.put("muting_user", user)
|> Map.put("reply_filtering_user", user)
-
- params =
- if params["method"] do
- Map.put(params, :method, String.to_existing_atom(params["method"]))
- else
- params
- end
-
- activities = ActivityPub.fetch_public_activities(params)
+ |> ActivityPub.fetch_public_activities()
conn
|> add_link_headers(activities, %{"local" => local_only})