Add support for configuring a favicon and embed PWA manifest in server-generated-meta

This commit is contained in:
Henry Jameson 2023-10-29 18:58:57 +02:00 committed by Haelwenn (lanodan) Monnier
parent bf2d6abaf2
commit a5aa8ea796
4 changed files with 33 additions and 3 deletions

1
changelog.d/favicon.add Normal file
View File

@ -0,0 +1 @@
Add support for configuring favicon, embed favicon and PWA manifest in server-generated meta

View File

@ -171,6 +171,7 @@
short_description: "",
background_image: "/images/city.jpg",
instance_thumbnail: "/instance/thumbnail.jpeg",
favicon: "/favicon.png",
limit: 5_000,
description_limit: 5_000,
remote_limit: 100_000,
@ -346,6 +347,8 @@
icons: [
%{
src: "/static/logo.svg",
sizes: "144x144",
purpose: "any",
type: "image/svg+xml"
}
],

View File

@ -987,6 +987,12 @@
"The instance thumbnail can be any image that represents your instance and is used by some apps or services when they display information about your instance.",
suggestions: ["/instance/thumbnail.jpeg"]
},
%{
key: :favicon,
type: {:string, :image},
description: "Favicon of the instance",
suggestions: ["/favicon.png"]
},
%{
key: :show_reactions,
type: :boolean,

View File

@ -18,9 +18,22 @@ def api_not_implemented(conn, _params) do
end
def redirector(conn, _params, code \\ 200) do
{:ok, index_content} = File.read(index_file_path())
title = "<title>#{Pleroma.Config.get([:instance, :name])}</title>"
favicon = "<link rel='icon' href='#{Pleroma.Config.get([:instance, :favicon])}'>"
manifest = "<link rel='manifest' href='/manifest.json'>"
response =
index_content
|> String.replace(
"<!--server-generated-meta-->",
title <> favicon <> manifest
)
conn
|> put_resp_content_type("text/html")
|> send_file(code, index_file_path())
|> send_resp(code, response)
end
def redirector_with_meta(conn, %{"maybe_nickname_or_id" => maybe_nickname_or_id} = params) do
@ -38,10 +51,15 @@ def redirector_with_meta(conn, params) do
tags = build_tags(conn, params)
preloads = preload_data(conn, params)
title = "<title>#{Pleroma.Config.get([:instance, :name])}</title>"
favicon = "<link rel='icon' href='#{Pleroma.Config.get([:instance, :favicon])}'>"
manifest = "<link rel='manifest' href='/manifest.json'>"
response =
index_content
|> String.replace("<!--server-generated-meta-->", tags <> preloads <> title)
|> String.replace(
"<!--server-generated-meta-->",
tags <> preloads <> title <> favicon <> manifest
)
conn
|> put_resp_content_type("text/html")
@ -56,10 +74,12 @@ def redirector_with_preload(conn, params) do
{:ok, index_content} = File.read(index_file_path())
preloads = preload_data(conn, params)
title = "<title>#{Pleroma.Config.get([:instance, :name])}</title>"
favicon = "<link rel='icon' href='#{Pleroma.Config.get([:instance, :favicon])}'>"
manifest = "<link rel='manifest' href='/manifest.json'>"
response =
index_content
|> String.replace("<!--server-generated-meta-->", preloads <> title)
|> String.replace("<!--server-generated-meta-->", preloads <> title <> favicon <> manifest)
conn
|> put_resp_content_type("text/html")