forked from AkkomaGang/akkoma
Add [:instances_favicons, :enabled] setting, defaults to false
This commit is contained in:
parent
8c9df2d2e6
commit
312fc55f14
6 changed files with 53 additions and 6 deletions
|
@ -706,6 +706,8 @@
|
||||||
|
|
||||||
config :ex_aws, http_client: Pleroma.HTTP.ExAws
|
config :ex_aws, http_client: Pleroma.HTTP.ExAws
|
||||||
|
|
||||||
|
config :pleroma, :instances_favicons, enabled: false
|
||||||
|
|
||||||
# Import environment specific config. This must remain at the bottom
|
# Import environment specific config. This must remain at the bottom
|
||||||
# of this file so it overrides the configuration defined above.
|
# of this file so it overrides the configuration defined above.
|
||||||
import_config "#{Mix.env()}.exs"
|
import_config "#{Mix.env()}.exs"
|
||||||
|
|
|
@ -3447,5 +3447,18 @@
|
||||||
suggestions: [false]
|
suggestions: [false]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
group: :pleroma,
|
||||||
|
key: :instances_favicons,
|
||||||
|
type: :group,
|
||||||
|
description: "Control favicons for instances",
|
||||||
|
children: [
|
||||||
|
%{
|
||||||
|
key: :enabled,
|
||||||
|
type: :boolean,
|
||||||
|
description: "Allow/disallow displaying and getting instances favicons"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -111,6 +111,8 @@
|
||||||
|
|
||||||
config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true
|
config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true
|
||||||
|
|
||||||
|
config :pleroma, :instances_favicons, enabled: true
|
||||||
|
|
||||||
if File.exists?("./config/test.secret.exs") do
|
if File.exists?("./config/test.secret.exs") do
|
||||||
import_config "test.secret.exs"
|
import_config "test.secret.exs"
|
||||||
else
|
else
|
||||||
|
|
|
@ -987,3 +987,9 @@ Restrict access for unauthenticated users to timelines (public and federate), us
|
||||||
## Pleroma.Web.ApiSpec.CastAndValidate
|
## Pleroma.Web.ApiSpec.CastAndValidate
|
||||||
|
|
||||||
* `:strict` a boolean, enables strict input validation (useful in development, not recommended in production). Defaults to `false`.
|
* `:strict` a boolean, enables strict input validation (useful in development, not recommended in production). Defaults to `false`.
|
||||||
|
|
||||||
|
## :instances_favicons
|
||||||
|
|
||||||
|
Control favicons for instances.
|
||||||
|
|
||||||
|
* `enabled`: Allow/disallow displaying and getting instances favicons
|
||||||
|
|
|
@ -205,12 +205,16 @@ defp do_render("show.json", %{user: user} = opts) do
|
||||||
end
|
end
|
||||||
|
|
||||||
favicon =
|
favicon =
|
||||||
|
if Pleroma.Config.get([:instances_favicons, :enabled]) do
|
||||||
user
|
user
|
||||||
|> Map.get(:ap_id, "")
|
|> Map.get(:ap_id, "")
|
||||||
|> URI.parse()
|
|> URI.parse()
|
||||||
|> URI.merge("/")
|
|> URI.merge("/")
|
||||||
|> Pleroma.Instances.Instance.get_or_update_favicon()
|
|> Pleroma.Instances.Instance.get_or_update_favicon()
|
||||||
|> MediaProxy.url()
|
|> MediaProxy.url()
|
||||||
|
else
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
%{
|
%{
|
||||||
id: to_string(user.id),
|
id: to_string(user.id),
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
|
defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
|
|
||||||
|
alias Pleroma.Config
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.UserRelationship
|
alias Pleroma.UserRelationship
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
@ -18,6 +19,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
|
||||||
:ok
|
:ok
|
||||||
end
|
end
|
||||||
|
|
||||||
|
setup do: clear_config([:instances_favicons, :enabled])
|
||||||
|
|
||||||
test "Represent a user account" do
|
test "Represent a user account" do
|
||||||
background_image = %{
|
background_image = %{
|
||||||
"url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}]
|
"url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}]
|
||||||
|
@ -94,6 +97,23 @@ test "Represent a user account" do
|
||||||
assert expected == AccountView.render("show.json", %{user: user})
|
assert expected == AccountView.render("show.json", %{user: user})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "Favicon is nil when :instances_favicons is disabled" do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
Config.put([:instances_favicons, :enabled], true)
|
||||||
|
|
||||||
|
assert %{
|
||||||
|
pleroma: %{
|
||||||
|
favicon:
|
||||||
|
"https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png"
|
||||||
|
}
|
||||||
|
} = AccountView.render("show.json", %{user: user})
|
||||||
|
|
||||||
|
Config.put([:instances_favicons, :enabled], false)
|
||||||
|
|
||||||
|
assert %{pleroma: %{favicon: nil}} = AccountView.render("show.json", %{user: user})
|
||||||
|
end
|
||||||
|
|
||||||
test "Represent the user account for the account owner" do
|
test "Represent the user account for the account owner" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue