2022-07-18 15:30:45 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class ManifestsController < ApplicationController
|
|
|
|
include ThemeHelper
|
|
|
|
|
|
|
|
def show
|
|
|
|
render json: {
|
|
|
|
name: APP_CONFIG["site_name"],
|
2022-07-31 23:19:42 +02:00
|
|
|
description: t("about.about.subtitle"),
|
2023-01-21 18:23:40 +01:00
|
|
|
start_url: root_url,
|
2022-07-18 15:30:45 +02:00
|
|
|
scope: root_url,
|
|
|
|
display: "standalone",
|
|
|
|
categories: %w[social],
|
|
|
|
lang: I18n.locale,
|
|
|
|
shortcuts: [
|
2022-07-31 22:55:03 +02:00
|
|
|
webapp_shortcut(inbox_url, t("navigation.inbox"), "inbox")
|
2022-07-18 15:30:45 +02:00
|
|
|
],
|
|
|
|
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
|
2023-01-21 18:18:14 +01:00
|
|
|
%i[1024 512 384 192 144 128 96 72 48].map do |size|
|
2022-07-18 15:30:45 +02:00
|
|
|
[
|
2023-01-21 18:16:24 +01:00
|
|
|
{ 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" }
|
2022-07-18 15:30:45 +02:00
|
|
|
]
|
|
|
|
end.flatten
|
|
|
|
end
|
|
|
|
end
|