Explorar el Código

Improve dynamic webmanifest setup

nimbleghost hace 2 años
padre
commit
000a3e005c
Se han modificado 3 ficheros con 10 adiciones y 13 borrados
  1. 3 0
      web/index.html
  2. 4 1
      web/public/sw.js
  3. 3 12
      web/vite.config.js

+ 3 - 0
web/index.html

@@ -41,6 +41,9 @@
     <!-- Style overrides & fonts -->
     <link rel="stylesheet" href="/static/css/app.css" type="text/css" />
     <link rel="stylesheet" href="/static/css/fonts.css" type="text/css" />
+
+    <!-- PWA -->
+    <link rel="manifest" href="/manifest.webmanifest" />
   </head>
   <body>
     <noscript>

+ 4 - 1
web/public/sw.js

@@ -245,7 +245,10 @@ if (!import.meta.env.DEV) {
         // this is so we don't respond to `/` UNLESS it's the app root itself, defined above
         /^\/.+$/,
       ],
-      denylist: [/^\/docs\/?$/],
+      // only /docs is required so it is navigable in the browser.
+      // the rest are nice-to-haves so the single-page-app doesn't try to handle them, but `fetch`
+      // and browser requests would work anyway.
+      denylist: [/^\/(docs|static|file).*$/, /^\/(app.html|manifest.webmanifest|sw.js|config.js)$/],
     })
   );
 

+ 3 - 12
web/vite.config.js

@@ -3,7 +3,7 @@ import { defineConfig } from "vite";
 import react from "@vitejs/plugin-react";
 import { VitePWA } from "vite-plugin-pwa";
 
-export default defineConfig(() => ({
+export default defineConfig(({ mode }) => ({
   build: {
     outDir: "build",
     assetsDir: "static/media",
@@ -43,24 +43,15 @@ export default defineConfig(() => ({
           }),
         ],
       },
-      manifest: {
-        name: "ntfy web",
-        short_name: "ntfy",
-        description:
-          "ntfy lets you send push notifications via scripts from any computer or phone. Made with ❤ by Philipp C. Heckel, Apache License 2.0, source at https://heckel.io/ntfy.",
+      // The actual prod manifest is served from the go server, see server.go handleWebManifest.
+      manifest: mode === "development" && {
         theme_color: "#317f6f",
-        start_url: "/",
         icons: [
           {
             src: "/static/images/pwa-192x192.png",
             sizes: "192x192",
             type: "image/png",
           },
-          {
-            src: "/static/images/pwa-512x512.png",
-            sizes: "512x512",
-            type: "image/png",
-          },
         ],
       },
     }),