Attempt to fix incorrect federation of default instance avatars
This commit is contained in:
parent
15aa94f40f
commit
6f090f981b
3 changed files with 24 additions and 4 deletions
|
@ -90,6 +90,14 @@ def avatar_url(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
|
||||
|
|
|
@ -230,6 +230,21 @@ def update_object_in_activities(%{data: %{"id" => id}} = object) 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 """
|
||||
|
|
|
@ -87,16 +87,13 @@ def render("user.json", %{user: user}) 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
|
||||
|
||||
|
|
Loading…
Reference in a new issue