Skip to content

Commit 44ed2e1

Browse files
Merge pull request #255 from osm-fr/cache
Réactivation du service worker
2 parents e0c5d4e + aa59dad commit 44ed2e1

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

2025/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,4 @@ The [conferences data](./src/js/conferences.json) are injected in the [programme
3131

3232
The website support PWA technology to install website like an app on IOS and Android.
3333
- PWA file properties is in [manifest.json](./src/manifest.json)
34+
- When website is opened [Javascript code](./src/js/main.js) was executed to register a [service worker](./src/js/service-worker.js) to store a part of the website in browser cache.

2025/src/js/main.js

+10
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,14 @@ $(function () {
1717
// Démarrer les tooltips pour les sponsors
1818
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
1919
[...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl));
20+
21+
if ('serviceWorker' in navigator) {
22+
navigator.serviceWorker.register('js/service-worker.js')
23+
.then((registration) => {
24+
console.log('Service Worker registered with scope:', registration.scope);
25+
})
26+
.catch((error) => {
27+
console.error('Service Worker registration failed:', error);
28+
});
29+
}
2030
});

2025/src/js/service-worker.js

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
const CACHE_NAME = 'sotm-2025';
2+
const urlsToCache = [
3+
'../',
4+
'../index.html',
5+
'../css/main.css',
6+
'../js/main.js'
7+
];
8+
9+
// Install event
10+
self.addEventListener('install', (event) => {
11+
event.waitUntil(
12+
caches.open(CACHE_NAME).then((cache) => {
13+
return cache.addAll(urlsToCache);
14+
})
15+
);
16+
});
17+
18+
// Fetch event
19+
self.addEventListener('fetch', (event) => {
20+
event.respondWith(
21+
caches.match(event.request).then((response) => {
22+
return response || fetch(event.request);
23+
})
24+
);
25+
});
26+
27+
// Activate event
28+
self.addEventListener('activate', (event) => {
29+
const cacheWhitelist = [CACHE_NAME];
30+
event.waitUntil(
31+
caches.keys().then((cacheNames) => {
32+
return Promise.all(
33+
cacheNames.map((cacheName) => {
34+
if (!cacheWhitelist.includes(cacheName)) {
35+
return caches.delete(cacheName);
36+
}
37+
})
38+
);
39+
})
40+
);
41+
});

0 commit comments

Comments
 (0)