diff options
author | Alex Gleason <alex@alexgleason.me> | 2022-01-25 21:49:33 +0000 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2022-01-25 21:49:33 +0000 |
commit | 8951be771090c532f3e4c411c520dbcdfc81d7bd (patch) | |
tree | 3fd3538148dd05074c7fbf75443f2ffeaff82d13 /lib | |
parent | 0f4e0e667e870e38cf53d30d3ac3e3571aca4212 (diff) | |
parent | 0604b0dd091682727d26567e6166fb89db842a9c (diff) | |
download | pleroma-8951be771090c532f3e4c411c520dbcdfc81d7bd.tar.gz |
Merge branch 'inline-mention-self' into 'develop'
ForceMentionsInContent: don't mention self
See merge request pleroma/pleroma!3622
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex b/lib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex index c9b022cf8..71c240727 100644 --- a/lib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex +++ b/lib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex @@ -3,6 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.ForceMentionsInContent do + require Pleroma.Constants + alias Pleroma.Formatter alias Pleroma.Object alias Pleroma.User @@ -58,6 +60,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceMentionsInContent do defp sort_replied_user(users, _), do: users + # Drop constants and the actor's own AP ID + defp clean_recipients(recipients, object) do + Enum.reject(recipients, fn ap_id -> + ap_id in [ + object["object"]["actor"], + Pleroma.Constants.as_public(), + Pleroma.Web.ActivityPub.Utils.as_local_public() + ] + end) + end + @impl true def filter(%{"type" => "Create", "object" => %{"type" => "Note", "to" => to}} = object) when is_list(to) do @@ -69,6 +82,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceMentionsInContent do mention_users = to + |> clean_recipients(object) |> Enum.map(&User.get_cached_by_ap_id/1) |> Enum.reject(&is_nil/1) |> sort_replied_user(replied_to_user) |