diff --git a/static/main.js b/static/main.js index 9ee8731..5d7544d 100644 --- a/static/main.js +++ b/static/main.js @@ -1,3 +1,15 @@ +const registerServiceWorker = async () => { + if ('serviceWorker' in navigator) { + try { + await navigator.serviceWorker.register('/serviceWorker.js', { scope: '/' }) + } catch (error) { + console.error(`Service worker registration failed: ${error}`) + } + } +} + +registerServiceWorker() + window.addEventListener('load', () => { const navBars = document.getElementById('nav-bars') const navItems = document.getElementById('nav-items') diff --git a/static/serviceWorker.js b/static/serviceWorker.js new file mode 100644 index 0000000..213ce5e --- /dev/null +++ b/static/serviceWorker.js @@ -0,0 +1,18 @@ +const addResourcesToCache = async () => { + const cache = await caches.open('v1') + cache.addAll(['/', '/compositions', '/videos', '/lessons', '/contact']) + ;[ + 'https://jessebrault.nyc3.cdn.digitaloceanspaces.com/images/portrait1.jpg', + 'https://jessebrault.nyc3.cdn.digitaloceanspaces.com/images/portrait2.jpg', + 'https://jessebrault.nyc3.cdn.digitaloceanspaces.com/images/portrait4.jpg', + 'https://jessebrault.nyc3.cdn.digitaloceanspaces.com/images/jesse-brault-bratislava.jpg' + ].forEach(async url => { + const request = new Request(url, { mode: 'no-cors' }) + const response = await fetch(request) + cache.put(request, response) + }) +} + +self.addEventListener('activate', event => { + event.waitUntil(addResourcesToCache()) +})