diff --git a/src/components/app.update-prompt.tsx b/src/components/app.update-prompt.tsx new file mode 100644 index 0000000..cf26f16 --- /dev/null +++ b/src/components/app.update-prompt.tsx @@ -0,0 +1,19 @@ +import { Show } from "solid-js"; +import { useRegisterSW } from "virtual:pwa-register/solid"; + +export const UpdatePrompt = () => { + const { + needRefresh: [needRefresh], + updateServiceWorker, + } = useRegisterSW({ + immediate: true, + }); + + return ( + +
+ +
+
+ ); +}; diff --git a/src/entry-client.tsx b/src/entry-client.tsx index 4b3240c..8c1467b 100644 --- a/src/entry-client.tsx +++ b/src/entry-client.tsx @@ -2,11 +2,10 @@ import * as clientDb from "@scope/db/client"; import { hydrateStart, StartClient } from "@tanstack/solid-start/client"; import { hydrate } from "solid-js/web"; import "temporal-polyfill/global"; -import { useRegisterSW } from "virtual:pwa-register/solid"; -useRegisterSW({ - immediate: true, -}); +// useRegisterSW({ +// immediate: true, +// }); (async () => { await clientDb.migrateToLatest(); diff --git a/src/entry-sw.ts b/src/entry-sw.ts index e9510f2..528f201 100644 --- a/src/entry-sw.ts +++ b/src/entry-sw.ts @@ -1,4 +1,3 @@ -import { clientsClaim } from "workbox-core"; import { cleanupOutdatedCaches, createHandlerBoundToURL, precacheAndRoute } from "workbox-precaching"; import { NavigationRoute, registerRoute } from "workbox-routing"; @@ -15,5 +14,11 @@ const navigationRoute = new NavigationRoute(handler, { }); registerRoute(navigationRoute); -self.skipWaiting(); -clientsClaim(); +self.addEventListener("message", (event) => { + if (event.data && event.data.type === "SKIP_WAITING") { + self.skipWaiting(); + } +}); + +// self.skipWaiting(); +// clientsClaim(); diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 9afb6c4..125aef0 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -5,6 +5,7 @@ import { AddItem } from "../components/app.add-item.tsx"; import { AppHeader } from "../components/app.header.tsx"; import { Item } from "../components/app.item.tsx"; import { MissedItems } from "../components/app.missed-items.tsx"; +import { UpdatePrompt } from "../components/app.update-prompt.tsx"; export const Route = createFileRoute("/")({ ssr: false, @@ -40,6 +41,8 @@ export const Route = createFileRoute("/")({ = -1}> + + ); }, diff --git a/vite.config.ts b/vite.config.ts index adcb08b..1047059 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -31,22 +31,27 @@ export default defineConfig(({ mode }) => ({ }), VitePWA({ strategies: "generateSW", - registerType: "autoUpdate", // filename: "entry-sw.ts", // srcDir: "src", - integration: { - closeBundleOrder: "pre", - }, + // integration: { + // closeBundleOrder: "pre", + // }, manifest: { name: "Notes for Later", - short_name: "later", + short_name: "Later", description: "A Notes app that helps you keep track at notes for later", theme_color: "#fdf2f8", background_color: "#265456", }, + devOptions: { + enabled: true, + type: "module", + suppressWarnings: true, + }, + pwaAssets: { disabled: mode === "development", config: "pwa-assets.config.ts", @@ -54,12 +59,12 @@ export default defineConfig(({ mode }) => ({ workbox: { globPatterns: ["**/*.{css,ico,js,png,svg,wasm}"], - navigateFallback: "_shell.html", - navigateFallbackDenylist: [ + navigateFallback: mode === "development" ? undefined : "_shell.html", + navigateFallbackDenylist: mode === "development" ? undefined : [ /^\/_serverFn\//, /^\/api\//, ], - additionalManifestEntries: [ + additionalManifestEntries: mode === "development" ? [] : [ { url: "_shell.html", revision: new Date().toISOString() }, ], },