mirror of
https://git.youjo.love/youjo/youjo-be.git
synced 2024-11-20 05:49:54 +01:00
Don't crash on malformed avatar and banner values
This commit is contained in:
parent
995e733db5
commit
8490f686ac
2 changed files with 22 additions and 12 deletions
|
@ -367,21 +367,21 @@ defmodule Pleroma.User do
|
|||
def invisible?(_), do: false
|
||||
|
||||
def avatar_url(user, options \\ []) do
|
||||
case user.avatar do
|
||||
%{"url" => [%{"href" => href} | _]} ->
|
||||
href
|
||||
|
||||
_ ->
|
||||
unless options[:no_default] do
|
||||
Config.get([:assets, :default_user_avatar], "#{Endpoint.url()}/images/avi.png")
|
||||
end
|
||||
end
|
||||
default = Config.get([:assets, :default_user_avatar], "#{Endpoint.url()}/images/avi.png")
|
||||
do_optional_url(user.avatar, default, options)
|
||||
end
|
||||
|
||||
def banner_url(user, options \\ []) do
|
||||
case user.banner do
|
||||
%{"url" => [%{"href" => href} | _]} -> href
|
||||
_ -> !options[:no_default] && "#{Endpoint.url()}/images/banner.png"
|
||||
do_optional_url(user.banner, "#{Endpoint.url()}/images/banner.png", options)
|
||||
end
|
||||
|
||||
defp do_optional_url(field, default, options \\ []) do
|
||||
case field do
|
||||
%{"url" => [%{"href" => href} | _]} when is_binary(href) ->
|
||||
href
|
||||
|
||||
_ ->
|
||||
unless options[:no_default], do: default
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -2552,6 +2552,16 @@ defmodule Pleroma.UserTest do
|
|||
assert User.avatar_url(user, no_default: true) == nil
|
||||
end
|
||||
|
||||
test "avatar object with nil in href" do
|
||||
user = insert(:user, avatar: %{"url" => [%{"href" => nil}]})
|
||||
assert User.avatar_url(user) != nil
|
||||
end
|
||||
|
||||
test "banner object with nil in href" do
|
||||
user = insert(:user, banner: %{"url" => [%{"href" => nil}]})
|
||||
assert User.banner_url(user) != nil
|
||||
end
|
||||
|
||||
test "get_host/1" do
|
||||
user = insert(:user, ap_id: "https://lain.com/users/lain", nickname: "lain")
|
||||
assert User.get_host(user) == "lain.com"
|
||||
|
|
Loading…
Reference in a new issue