aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-01-06 15:39:14 -0600
committerAlex Gleason <alex@alexgleason.me>2021-01-06 15:39:14 -0600
commitcc09079aea54f5ff754925e0d5fbbc3b268dcb6d (patch)
treef91cbd22eb77c50743fe364bcc399fe34e162c3e /lib
parent1438fd958325c3d469315c478f06def9e4dd0de3 (diff)
downloadpleroma-cc09079aea54f5ff754925e0d5fbbc3b268dcb6d.tar.gz
Exclude blockers from notifications when `blockers_visible: false`
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/notification.ex12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index dd7a1c824..e9c9b3ea2 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -132,6 +132,7 @@ defmodule Pleroma.Notification do
|> preload([n, a, o], activity: {a, object: o})
|> exclude_notification_muted(user, exclude_notification_muted_opts)
|> exclude_blocked(user, exclude_blocked_opts)
+ |> exclude_blockers(user)
|> exclude_filtered(user)
|> exclude_visibility(opts)
end
@@ -145,6 +146,17 @@ defmodule Pleroma.Notification do
|> FollowingRelationship.keep_following_or_not_domain_blocked(user)
end
+ defp exclude_blockers(query, user) do
+ if Pleroma.Config.get([:activitypub, :blockers_visible]) == true do
+ query
+ else
+ blocker_ap_ids = User.incoming_relationships_ungrouped_ap_ids(user, [:block])
+
+ query
+ |> where([n, a], a.actor not in ^blocker_ap_ids)
+ end
+ end
+
defp exclude_notification_muted(query, _, %{@include_muted_option => true}) do
query
end