Fix update behaviour
This commit is contained in:
		
							parent
							
								
									55eed868fa
								
							
						
					
					
						commit
						9fa1288dbc
					
				
					 3 changed files with 32 additions and 1 deletions
				
			
		|  | @ -2,6 +2,7 @@ | ||||||
| import { cleanupOutdatedCaches, createHandlerBoundToURL, precacheAndRoute } from "workbox-precaching"; | import { cleanupOutdatedCaches, createHandlerBoundToURL, precacheAndRoute } from "workbox-precaching"; | ||||||
| import { NavigationRoute, registerRoute } from "workbox-routing"; | import { NavigationRoute, registerRoute } from "workbox-routing"; | ||||||
| import { NetworkFirst } from "workbox-strategies"; | import { NetworkFirst } from "workbox-strategies"; | ||||||
|  | import { clientsClaim } from "workbox-core"; | ||||||
| 
 | 
 | ||||||
| import { dbAsync } from "../src/app/db"; | import { dbAsync } from "../src/app/db"; | ||||||
| 
 | 
 | ||||||
|  | @ -224,6 +225,8 @@ precacheAndRoute( | ||||||
|   self.__WB_MANIFEST |   self.__WB_MANIFEST | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
|  | // Claim all open windows
 | ||||||
|  | clientsClaim(); | ||||||
| // Delete any cached old dist files from previous service worker versions
 | // Delete any cached old dist files from previous service worker versions
 | ||||||
| cleanupOutdatedCaches(); | cleanupOutdatedCaches(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,34 @@ | ||||||
| import * as React from "react"; | import * as React from "react"; | ||||||
| import { createRoot } from "react-dom/client"; | import { createRoot } from "react-dom/client"; | ||||||
|  | // eslint-disable-next-line import/no-unresolved | ||||||
|  | import { registerSW } from "virtual:pwa-register"; | ||||||
| import App from "./components/App"; | import App from "./components/App"; | ||||||
| 
 | 
 | ||||||
|  | // fetch new sw every hour, i.e. update app every hour while running | ||||||
|  | const intervalMS = 60 * 60 * 1000; | ||||||
|  | 
 | ||||||
|  | // https://vite-pwa-org.netlify.app/guide/periodic-sw-updates.html | ||||||
|  | registerSW({ | ||||||
|  |   onRegisteredSW(swUrl, registration) { | ||||||
|  |     if (!registration) { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     setInterval(async () => { | ||||||
|  |       if (registration.installing || navigator?.onLine === false) return; | ||||||
|  | 
 | ||||||
|  |       const resp = await fetch(swUrl, { | ||||||
|  |         cache: "no-store", | ||||||
|  |         headers: { | ||||||
|  |           cache: "no-store", | ||||||
|  |           "cache-control": "no-cache", | ||||||
|  |         }, | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |       if (resp?.status === 200) await registration.update(); | ||||||
|  |     }, intervalMS); | ||||||
|  |   }, | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| const root = createRoot(document.querySelector("#root")); | const root = createRoot(document.querySelector("#root")); | ||||||
| root.render(<App />); | root.render(<App />); | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ export default defineConfig(({ mode }) => ({ | ||||||
|     react(), |     react(), | ||||||
|     VitePWA({ |     VitePWA({ | ||||||
|       registerType: "autoUpdate", |       registerType: "autoUpdate", | ||||||
|       injectRegister: "inline", |       injectRegister: null, | ||||||
|       strategies: "injectManifest", |       strategies: "injectManifest", | ||||||
|       devOptions: { |       devOptions: { | ||||||
|         enabled: true, |         enabled: true, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue