Split up web app manifest action

This commit is contained in:
Karina Kwiatek 2022-07-17 11:10:29 +02:00 committed by Karina Kwiatek
parent 5e4819764a
commit c384dde809
2 changed files with 36 additions and 27 deletions

View File

@ -58,34 +58,43 @@ class StaticController < ApplicationController
def webapp_manifest def webapp_manifest
render json: { render json: {
name: APP_CONFIG["site_name"], name: APP_CONFIG["site_name"],
description: t(".front.subtitle"), description: t(".front.subtitle"),
start_url: root_url(source: "pwa"), start_url: root_url(source: "pwa"),
scope: root_url, scope: root_url,
display: "standalone", display: "standalone",
categories: %w[social], categories: %w[social],
lang: I18n.locale, lang: I18n.locale,
shortcuts: [ shortcuts: [
{ webapp_shortcut(inbox_url, t("views.navigation.inbox"), "inbox")
name: t('views.navigation.inbox'),
url: inbox_url,
icons: [
{
src: "/icons/shortcuts/inbox.svg",
sizes: "96x96"
}
]
}
], ],
icons: %i[1024 512 384 192 128 96 72 48].map do |size| icons: webapp_icons,
[ theme_color: theme_color,
{ src: "/icons/maskable_icon_x#{size}.webp", size: "#{size}x#{size}", type: "image/webp" },
{ src: "/icons/maskable_icon_x#{size}.png", size: "#{size}x#{size}", type: "image/png" }
]
end.flatten,
theme_color: theme_color,
background_color: mobile_theme_color, background_color: mobile_theme_color,
orientation: "any"
} }
end end
private
def webapp_shortcut(url, name, icon_name)
{
name: name,
url: url,
icons: [
{
src: "/icons/shortcuts/#{icon_name}.svg",
sizes: "96x96"
}
]
}
end
def webapp_icons
%i[1024 512 384 192 128 96 72 48].map do |size|
[
{ src: "/icons/maskable_icon_x#{size}.webp", size: "#{size}x#{size}", type: "image/webp" },
{ src: "/icons/maskable_icon_x#{size}.png", size: "#{size}x#{size}", type: "image/png" }
]
end.flatten
end
end end

View File

@ -47,7 +47,7 @@ describe StaticController, type: :controller do
"site_name" => "Specspring", "site_name" => "Specspring",
"hostname" => "test.host", "hostname" => "test.host",
"https" => false, "https" => false,
"items_per_page" => 5, "items_per_page" => 5
}) })
end end