demos for spacedust
1import { useEffect, useState } from 'react';
2
3export function WithServiceWorker({ children }) {
4 const [swRegistration, setSwRegistration] = useState(null);
5 useEffect(() => {
6 (async() => {
7 setSwRegistration('pending');
8 try {
9 await navigator.serviceWorker.register('/service-worker.js');
10 setSwRegistration('registered');
11 } catch (e) {
12 console.error('service worker registration failed:', e);
13 setSwRegistration('failed');
14 }
15 })();
16 }, []);
17
18 if (swRegistration === 'registered') return children;
19
20 if (swRegistration === 'failed') {
21 return (
22 <p>sorry, something went wrong registering the service worker</p>
23 );
24 }
25
26 return (
27 <p>registering service worker…</p>
28 );
29}