Retrospring/app/controllers/manifests_controller.rb

50 lines
1.4 KiB
Ruby

# frozen_string_literal: true
class ManifestsController < ApplicationController
include ThemeHelper
def show
render json: {
name: APP_CONFIG["site_name"],
description: t("about.about.subtitle"),
start_url: root_url(source: "pwa"),
scope: root_url,
display: "standalone",
categories: %w[social],
lang: I18n.locale,
shortcuts: [
webapp_shortcut(inbox_url, t("navigation.inbox"), "inbox")
],
icons: webapp_icons,
theme_color: theme_color,
background_color: mobile_theme_color
}
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/icon_x#{size}.webp", sizes: "#{size}x#{size}", type: "image/webp", purpose: "any" },
{ src: "/icons/icon_x#{size}.png", sizes: "#{size}x#{size}", type: "image/png", purpose: "any" },
{ src: "/icons/maskable_icon_x#{size}.webp", sizes: "#{size}x#{size}", type: "image/webp", purpose: "maskable" },
{ src: "/icons/maskable_icon_x#{size}.png", sizes: "#{size}x#{size}", type: "image/png", purpose: "maskable" }
]
end.flatten
end
end