fix: recover stale service worker clients

This commit is contained in:
2026-08-03 00:47:00 +05:30
parent 13aa75c366
commit eb325a8412
3 changed files with 46 additions and 2 deletions
+37
View File
@@ -0,0 +1,37 @@
/* global location, navigator, sessionStorage, window */
(function () {
if (!("serviceWorker" in navigator)) return;
var version = "docs-v3";
var workerUrl = "/sw.js?v=" + encodeURIComponent(version);
if (window.trustedTypes) {
try {
workerUrl = window.trustedTypes
.createPolicy("wrnexus-pwa-recovery", {
createScriptURL: function (value) {
return value;
},
})
.createScriptURL(workerUrl);
} catch {
// A previously-created policy can make creation fail; the same-origin
// string remains valid when Trusted Types enforcement is not active.
}
}
var reloading = false;
navigator.serviceWorker.addEventListener("controllerchange", function () {
var key = "wrnexus-pwa-controller-" + version;
if (reloading || sessionStorage.getItem(key)) return;
reloading = true;
sessionStorage.setItem(key, "1");
location.reload();
});
navigator.serviceWorker
.register(workerUrl, { updateViaCache: "none" })
.then(function (registration) {
return registration.update();
})
.catch(function () {});
})();