Page MenuHomePhorge

No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None
diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex
index 255803c14..64958e1f2 100644
--- a/lib/pleroma/web/common_api/utils.ex
+++ b/lib/pleroma/web/common_api/utils.ex
@@ -435,13 +435,54 @@ defmodule Pleroma.Web.CommonAPI.Utils do
%{}
end
- tagged_mentions = maybe_extract_mentions(object_data)
+ tagged_mentions =
+ maybe_extract_mentions(object_data)
+ |> filter_tags_to_qualified(activity)
recipients ++ tagged_mentions
end
def maybe_notify_mentioned_recipients(recipients, _), do: recipients
+ # Filter tagged mentions to ensure they can actually access the status
+ defp filter_tags_to_qualified(tagged_mentions, %Activity{
+ recipients: recipients,
+ data: data,
+ actor: actor
+ }) do
+ recipients =
+ if recipients && recipients != [],
+ do: recipients,
+ else:
+ (data["to"] || []) ++ (data["cc"] || []) ++ (data["bto"] || []) ++ (data["bcc"] || [])
+
+ cond do
+ recipients == [] ->
+ []
+
+ Pleroma.Constants.as_public() in recipients ->
+ tagged_mentions
+
+ true ->
+ author = User.get_cached_by_ap_id(actor)
+ to_followers = author.follower_address in recipients
+
+ Enum.filter(tagged_mentions, fn tagged ->
+ cond do
+ tagged in recipients ->
+ true
+
+ to_followers ->
+ tagged_user = User.get_cached_by_ap_id(tagged)
+ User.following?(tagged_user, author)
+
+ true ->
+ false
+ end
+ end)
+ end
+ end
+
def maybe_notify_followers(recipients, %Activity{data: %{"type" => "Move"}} = activity) do
with %User{} = user <- User.get_cached_by_ap_id(activity.actor) do
user

File Metadata

Mime Type
text/x-diff
Expires
Thu, Oct 29, 5:38 AM (8 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1797595
Default Alt Text
(1 KB)

Event Timeline