|
|
@@ -9,9 +9,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do |
|
|
|
alias Pleroma.Web.ActivityPub.Transmogrifier |
|
|
|
alias Pleroma.Web.ActivityPub.Utils |
|
|
|
|
|
|
|
def cast_recipients(message, field, field_fallback \\ []) do |
|
|
|
def cast_and_filter_recipients(message, field, follower_collection, field_fallback \\ []) do |
|
|
|
{:ok, data} = ObjectValidators.Recipients.cast(message[field] || field_fallback) |
|
|
|
|
|
|
|
data = |
|
|
|
Enum.reject(data, fn x -> |
|
|
|
String.ends_with?(x, "/followers") and x != follower_collection |
|
|
|
end) |
|
|
|
|
|
|
|
Map.put(message, field, data) |
|
|
|
end |
|
|
|
|
|
|
@@ -24,11 +29,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do |
|
|
|
data |
|
|
|
|> Map.put("context", context) |
|
|
|
|> Map.put("context_id", context_id) |
|
|
|
|> cast_recipients("to") |
|
|
|
|> cast_recipients("cc") |
|
|
|
|> cast_recipients("bto") |
|
|
|
|> cast_recipients("bcc") |
|
|
|
|> Transmogrifier.fix_explicit_addressing(follower_collection) |
|
|
|
|> cast_and_filter_recipients("to", follower_collection) |
|
|
|
|> cast_and_filter_recipients("cc", follower_collection) |
|
|
|
|> cast_and_filter_recipients("bto", follower_collection) |
|
|
|
|> cast_and_filter_recipients("bcc", follower_collection) |
|
|
|
|> Transmogrifier.fix_implicit_addressing(follower_collection) |
|
|
|
end |
|
|
|
|
|
|
@@ -36,11 +40,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do |
|
|
|
%User{follower_address: follower_collection} = User.get_cached_by_ap_id(activity["actor"]) |
|
|
|
|
|
|
|
activity |
|
|
|
|> cast_recipients("to") |
|
|
|
|> cast_recipients("cc") |
|
|
|
|> cast_recipients("bto") |
|
|
|
|> cast_recipients("bcc") |
|
|
|
|> Transmogrifier.fix_explicit_addressing(follower_collection) |
|
|
|
|> cast_and_filter_recipients("to", follower_collection) |
|
|
|
|> cast_and_filter_recipients("cc", follower_collection) |
|
|
|
|> cast_and_filter_recipients("bto", follower_collection) |
|
|
|
|> cast_and_filter_recipients("bcc", follower_collection) |
|
|
|
|> Transmogrifier.fix_implicit_addressing(follower_collection) |
|
|
|
end |
|
|
|
|
|
|
|