aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/user.ex8
-rw-r--r--lib/pleroma/web/activity_pub/utils.ex15
-rw-r--r--lib/pleroma/web/activity_pub/views/user_view.ex5
3 files changed, 24 insertions, 4 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 41289b4d0..ee5eb8efa 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -90,6 +90,14 @@ defmodule Pleroma.User do
end
end
+ # Do not return instance default avatar for federation
+ def avatar_url_ap(user) do
+ case user.avatar do
+ %{"url" => [%{"href" => href} | _]} -> href
+ _ -> nil
+ end
+ end
+
def banner_url(user) do
case user.info.banner do
%{"url" => [%{"href" => href} | _]} -> href
diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex
index 2e9ffe41c..6d74738f0 100644
--- a/lib/pleroma/web/activity_pub/utils.ex
+++ b/lib/pleroma/web/activity_pub/utils.ex
@@ -230,6 +230,21 @@ defmodule Pleroma.Web.ActivityPub.Utils do
end)
end
+ # Only federate user icon if not nil
+ # Prevents federating instance default avatars
+ def maybe_make_icon(user) do
+ if User.avatar_url_ap(user) do
+ %{
+ "icon" => %{
+ "type" => "Image",
+ "url" => User.avatar_url_ap(user)
+ }
+ }
+ else
+ []
+ end
+ end
+
#### Like-related helpers
@doc """
diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex
index 3d00dcbf2..f5c86d360 100644
--- a/lib/pleroma/web/activity_pub/views/user_view.ex
+++ b/lib/pleroma/web/activity_pub/views/user_view.ex
@@ -87,16 +87,13 @@ defmodule Pleroma.Web.ActivityPub.UserView do
"publicKeyPem" => public_key
},
"endpoints" => endpoints,
- "icon" => %{
- "type" => "Image",
- "url" => User.avatar_url(user)
- },
"image" => %{
"type" => "Image",
"url" => User.banner_url(user)
},
"tag" => user.info.source_data["tag"] || []
}
+ |> Map.merge(Utils.maybe_make_icon(user))
|> Map.merge(Utils.make_json_ld_header())
end