Skip to content

Commit b93fab5

Browse files
committed
fix(offline): use serviceWorker.controller directly for CHECK_ONLINE polling
1 parent e956da3 commit b93fab5

2 files changed

Lines changed: 3 additions & 6 deletions

File tree

src/hooks/useIsOnline.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@ const useIsOnline = () => {
3030
// While offline, poll the SW every 3s to check if the network has returned, broadcast ONLINE if successful
3131
useEffect(() => {
3232
if (isOnline || !("serviceWorker" in navigator)) return;
33-
const interval = setInterval(async () => {
34-
const reg = await navigator.serviceWorker.ready;
35-
reg.active?.postMessage({ type: "CHECK_ONLINE" });
33+
const interval = setInterval(() => {
34+
navigator.serviceWorker.controller?.postMessage({ type: "CHECK_ONLINE" });
3635
}, 3000);
3736
return () => clearInterval(interval);
3837
}, [isOnline]);

src/hooks/useIsOnline.test.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ describe("useIsOnline", () => {
1919

2020
mockPostMessage = jest.fn();
2121
swEventTarget = new EventTarget();
22-
swEventTarget.ready = Promise.resolve({
23-
active: { postMessage: mockPostMessage },
24-
});
22+
swEventTarget.controller = { postMessage: mockPostMessage };
2523

2624
// jsdom doesn't implement navigator.serviceWorker so provide a minimal stub
2725
Object.defineProperty(navigator, "serviceWorker", {

0 commit comments

Comments
 (0)