Skip to content

Commit 1eb652b

Browse files
committed
feat: add service worker
1 parent a2211b7 commit 1eb652b

3 files changed

Lines changed: 18 additions & 61 deletions

File tree

client/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@
2626
]
2727
},
2828
"dependencies": {
29+
"@dnd-kit/core": "6.3.1",
30+
"@dnd-kit/modifiers": "9.0.0",
31+
"@dnd-kit/sortable": "10.0.0",
32+
"@dnd-kit/utilities": "3.2.2",
2933
"dotenv": "17.4.2",
3034
"http-proxy-middleware": "2.0.9",
3135
"i18next": "23.16.8",
3236
"lodash": "4.18.1",
3337
"prop-types": "15.8.1",
3438
"react": "18.3.1",
3539
"react-autosuggest": "10.1.0",
36-
"@dnd-kit/core": "6.3.1",
37-
"@dnd-kit/modifiers": "9.0.0",
38-
"@dnd-kit/sortable": "10.0.0",
39-
"@dnd-kit/utilities": "3.2.2",
4040
"react-dom": "18.3.1",
4141
"react-i18next": "14.1.3",
4242
"react-redux": "7.2.9",

client/public/service-worker.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
self.addEventListener('install', () => {
2-
self.skipWaiting();
1+
self.addEventListener('install', (event) => {
2+
event.waitUntil(self.skipWaiting());
33
});
44

55
self.addEventListener('activate', (event) => {
6-
event.waitUntil(
7-
caches
8-
.keys()
9-
.then((keys) => Promise.all(keys.map((key) => caches.delete(key))))
10-
.then(() => self.clients.claim())
11-
.then(() => self.registration.unregister())
12-
);
6+
event.waitUntil(self.clients.claim());
7+
});
8+
9+
self.addEventListener('fetch', (event) => {
10+
event.respondWith(fetch(event.request));
1311
});
Lines changed: 7 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,17 @@
1-
let refreshing = false;
2-
3-
function clearServiceWorkers() {
4-
return navigator.serviceWorker.getRegistrations().then((registrations) => {
5-
if (registrations.length === 0) {
6-
return false;
7-
}
8-
9-
return Promise.all(
10-
registrations.map((registration) => registration.unregister())
11-
).then(() => true);
12-
});
13-
}
14-
15-
function clearCaches() {
16-
if (!('caches' in window)) {
17-
return Promise.resolve();
18-
}
19-
20-
return caches
21-
.keys()
22-
.then((keys) => Promise.all(keys.map((key) => caches.delete(key))));
23-
}
24-
251
export default function register() {
262
if (process.env.NODE_ENV !== 'production' || !('serviceWorker' in navigator)) {
273
return;
284
}
295

30-
const publicUrl = new URL(process.env.PUBLIC_URL, window.location);
31-
if (publicUrl.origin !== window.location.origin) {
32-
return;
33-
}
34-
35-
navigator.serviceWorker.addEventListener('controllerchange', () => {
36-
if (refreshing) {
37-
return;
38-
}
39-
refreshing = true;
40-
window.location.reload();
41-
});
42-
43-
// Replace any old worker with a one-time cleanup script, then reload.
44-
navigator.serviceWorker.getRegistrations().then((registrations) => {
45-
if (registrations.length > 0) {
46-
registrations.forEach((registration) => {
47-
registration.update();
48-
});
49-
return;
50-
}
51-
52-
clearCaches();
6+
window.addEventListener('load', () => {
7+
navigator.serviceWorker.register(`${process.env.PUBLIC_URL}/service-worker.js`);
538
});
549
}
5510

5611
export function unregister() {
57-
clearServiceWorkers().then(() => clearCaches());
12+
if ('serviceWorker' in navigator) {
13+
navigator.serviceWorker.ready.then((registration) => {
14+
registration.unregister();
15+
});
16+
}
5817
}

0 commit comments

Comments
 (0)