Dynamic manifest.json and move projects under project/
This commit is contained in:
parent
c8edc250a1
commit
b6e36fdf00
|
@ -6,6 +6,7 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<link rel="stylesheet" type="text/css" href="/css/global.css" />
|
<link rel="stylesheet" type="text/css" href="/css/global.css" />
|
||||||
<title>Focus.</title>
|
<title>Focus.</title>
|
||||||
|
<link rel="manifest" href="/manifest.json" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
|
|
|
@ -40,10 +40,10 @@
|
||||||
{:else}
|
{:else}
|
||||||
<div
|
<div
|
||||||
class="title"
|
class="title"
|
||||||
on:click={() => (location.href = `/${project.id}`)}
|
on:click={() => (location.href = `/project/${project.id}`)}
|
||||||
on:keydown={(e) => {
|
on:keydown={(e) => {
|
||||||
if (e.key === 'Enter') {
|
if (e.key === 'Enter') {
|
||||||
location.href = `/${project.id}`;
|
location.href = `/project/${project.id}`;
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import projectsApi from '$lib/api/projectsApi';
|
||||||
|
|
||||||
|
interface Shortcut {
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
url: string;
|
||||||
|
icons: {
|
||||||
|
src: string;
|
||||||
|
sizes: string;
|
||||||
|
}[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function GET() {
|
||||||
|
const icon = {
|
||||||
|
src: '/img/icon.svg',
|
||||||
|
type: 'image/svg+xml',
|
||||||
|
sizes: 'any'
|
||||||
|
};
|
||||||
|
|
||||||
|
const projects = await projectsApi.getAll();
|
||||||
|
|
||||||
|
const shortcuts: Shortcut[] = projects.map((project) => {
|
||||||
|
return {
|
||||||
|
name: `Project ${project.title}`,
|
||||||
|
description: `Shortcut for project ${project.title}`,
|
||||||
|
url: `/${project.id}`,
|
||||||
|
icons: [icon]
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const manifest = {
|
||||||
|
short_name: 'Focus',
|
||||||
|
name: 'Focus',
|
||||||
|
start_url: '/',
|
||||||
|
display: 'standalone',
|
||||||
|
icons: [icon],
|
||||||
|
shortcuts
|
||||||
|
};
|
||||||
|
|
||||||
|
return new Response(JSON.stringify(manifest), {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/manifest+json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue