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
commit a5aa8ea796
4 changed files with 33 additions and 3 deletions

View file

@ -18,9 +18,22 @@ defmodule Pleroma.Web.Fallback.RedirectController 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 @@ defmodule Pleroma.Web.Fallback.RedirectController 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 @@ defmodule Pleroma.Web.Fallback.RedirectController 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")