server/controllers/manifest.ts
Rama main · réplica de lectura del repositorio original.
import type express from 'express';
import { Setting } from '../models';
import type { IdentifiedRequest, RoutesDescriptor } from './routes';
export async function getManifest(req: IdentifiedRequest<any>, res: express.Response) {
const iconsDirectory = 'favicon/';
const scope = process.kresus.urlPrefix;
const { id: userId } = req.user;
res.status(200)
.contentType('application/manifest+json')
.json({
name: 'Kresus',
short_name: 'Kresus',
description: 'Your personal finances manager',
lang: await Setting.getLocale(userId),
start_url: scope,
scope,
display: 'fullscreen',
theme_color: '#303641',
icons: [
{
src: `${iconsDirectory}favicon-16x16.png`,
sizes: '16x16',
type: 'image/png',
density: 0.75,
},
{
src: `${iconsDirectory}favicon-32x32.png`,
sizes: '32x32',
type: 'image/png',
density: 0.75,
},
{
src: `${iconsDirectory}favicon-48x48.png`,
sizes: '48x48',
type: 'image/png',
density: 1,
},
{
src: `${iconsDirectory}favicon-96x96.png`,
sizes: '96x96',
type: 'image/png',
density: 2,
},
{
src: `${iconsDirectory}favicon-144x144.png`,
sizes: '144x144',
type: 'image/png',
density: 3,
},
{
src: `${iconsDirectory}favicon-192x192.png`,
sizes: '192x192',
type: 'image/png',
density: 4,
},
],
});
}
const routes: RoutesDescriptor = {
manifest: {
get: getManifest,
},
};
export default routes;