registerSW.js 854 B

12345678910111213141516171819202122232425262728293031
  1. // eslint-disable-next-line import/no-unresolved
  2. import { registerSW as viteRegisterSW } from "virtual:pwa-register";
  3. // fetch new sw every hour, i.e. update app every hour while running
  4. const intervalMS = 60 * 60 * 1000;
  5. // https://vite-pwa-org.netlify.app/guide/periodic-sw-updates.html
  6. const registerSW = () =>
  7. viteRegisterSW({
  8. onRegisteredSW(swUrl, registration) {
  9. if (!registration) {
  10. return;
  11. }
  12. setInterval(async () => {
  13. if (registration.installing || navigator?.onLine === false) return;
  14. const resp = await fetch(swUrl, {
  15. cache: "no-store",
  16. headers: {
  17. cache: "no-store",
  18. "cache-control": "no-cache",
  19. },
  20. });
  21. if (resp?.status === 200) await registration.update();
  22. }, intervalMS);
  23. },
  24. });
  25. export default registerSW;