Skip to content
Merged
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ac27091
Fix service worker handling
ANSHIKATYAGI30 May 21, 2026
80cb0cf
Fix service-worker reload loop in Playwright tests
ANSHIKATYAGI30 May 21, 2026
7b5a359
Merge branch 'main' into fix-service-worker-handling
ANSHIKATYAGI30 May 21, 2026
38f06cd
Fixing reload block issue
ANSHIKATYAGI30 May 21, 2026
c6fcdd2
Fixing Playwright reload race condition
ANSHIKATYAGI30 May 21, 2026
c076f24
Merge branch 'main' into fix-service-worker-handling
sudip-mondal-2002 May 22, 2026
590e285
Resolving-service-worker-handling
ANSHIKATYAGI30 May 23, 2026
9803fc4
Merge branch 'main' into fix-service-worker-handling
ANSHIKATYAGI30 May 23, 2026
a82e525
Merge branch 'main' into fix-service-worker-handling
ANSHIKATYAGI30 May 24, 2026
33bfb29
Merge branch 'main' into fix-service-worker-handling
sudip-mondal-2002 May 25, 2026
512fdec
resolved-conflicts-service-worker-handling
ANSHIKATYAGI30 May 27, 2026
50460b3
Merge branch 'main' of https://github.com/sudip-mondal-2002/Amplitron…
ANSHIKATYAGI30 May 27, 2026
e7c5bb7
Merge branch 'fix-service-worker-handling' of https://github.com/ANSH…
ANSHIKATYAGI30 May 27, 2026
59b32a2
Merge branch 'main' into fix-service-worker-handling
ANSHIKATYAGI30 May 27, 2026
ec24095
Merge branch 'fix-service-worker-handling' of https://github.com/ANSH…
ANSHIKATYAGI30 May 27, 2026
405a3df
Merge branch 'main' into fix-service-worker-handling
ANSHIKATYAGI30 Jun 1, 2026
139dc94
fix: web demo issue
ANSHIKATYAGI30 Jun 4, 2026
1c959d9
Merge branch 'main' into fix-service-worker-handling
ANSHIKATYAGI30 Jun 4, 2026
9c3d70a
Merge branch 'main' into fix-service-worker-handling
MohitBareja16 Jun 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 48 additions & 9 deletions web/coi-serviceworker.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,49 @@ if (typeof window === 'undefined') {
headers: newHeaders,
});
})
.catch(function (e) {
console.error(e);
.catch((e) => {
console.error("Fetch failed:", e);
return new Response("Network error",
{ status: 503,
statusText: "Service Unavailable",
headers: { "Content-Type": "text/plain", },
});
})
);
});
} else {
// Window context — register the service worker
(async function () {
if (window.crossOriginIsolated !== false) return;
if (!("serviceWorker" in navigator)){
console.warn("Service workers are not supported in this browser.");
return;
}
if (window.crossOriginIsolated !== false) {
sessionStorage.removeItem("coiReloaded");
return;
}

const scriptUrl = window.document.currentScript?.src;

if (!scriptUrl) {
console.warn("Unable to determine current service worker script URL.");
return;
}

const registration = await navigator.serviceWorker
.register(window.document.currentScript.src)
const existingRegistration = await navigator.serviceWorker.getRegistration();

const existingScriptUrl =
existingRegistration?.active?.scriptURL ??
existingRegistration?.waiting?.scriptURL ??
existingRegistration?.installing?.scriptURL;

if (existingScriptUrl === scriptUrl) {
console.log("COOP/COEP Service Worker already registered.");
return;
}

const registration = await navigator.serviceWorker
.register(scriptUrl)
.catch((e) =>
console.error("COOP/COEP Service Worker failed to register:", e)
);
Expand All @@ -72,14 +103,22 @@ if (typeof window === 'undefined') {
if (registration.installing) {
const sw = registration.installing || registration.waiting;
await new Promise((resolve) => {
sw.addEventListener("statechange", (e) => {
if (e.target.state === "activated") {
const sw = registration.installing || registration.waiting;
if (!sw) return resolve();
const onStateChange = () => {
if (sw.state === "activated") {
sw.removeEventListener("statechange", onStateChange);
resolve();
}
});
};
sw.addEventListener("statechange", onStateChange);
});
}
window.location.reload();
const RELOAD_KEY = "coiReloaded";
if (!sessionStorage.getItem(RELOAD_KEY)) {
sessionStorage.setItem(RELOAD_KEY, "true");
window.location.reload();
}
}
})();
}
Loading