diff --git a/index.html b/index.html old mode 100644 new mode 100755 index dd3c9063..d8fa5e37 --- a/index.html +++ b/index.html @@ -38,9 +38,16 @@ client.install(document.body) - window.addEventListener('load', () => { + window.addEventListener('load', () => { client.start() }) + + if ('serviceWorker' in navigator) { + try { + navigator.serviceWorker.register('sw.js'); + } catch ( error ) { + } + } diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..972e1f94 --- /dev/null +++ b/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Orca", + "short_name": "Orca", + "start_url": ".", + "scope": ".", + "display": "standalone", + "icons": [ + { + "src": "./desktop/icon.png", + "type": "image/png", + "sizes": "512x512" + } + ] +} diff --git a/sw.js b/sw.js new file mode 100644 index 00000000..240225cb --- /dev/null +++ b/sw.js @@ -0,0 +1,73 @@ +// 220 + +const assets = [ + + './', + + './manifest.json', + './desktop/icon.png', + + './desktop/sources/links/style.css', + './desktop/sources/links/reset.css', + './desktop/sources/links/fonts.css', + './desktop/sources/links/main.css', + './desktop/sources/links/theme.css', + + './desktop/sources/scripts/lib/acels.js', + './desktop/sources/scripts/lib/theme.js', + './desktop/sources/scripts/lib/history.js', + './desktop/sources/scripts/lib/source.js', + './desktop/sources/scripts/core/library.js', + './desktop/sources/scripts/core/io.js', + './desktop/sources/scripts/core/operator.js', + './desktop/sources/scripts/core/orca.js', + './desktop/sources/scripts/core/transpose.js', + './desktop/sources/scripts/core/io/cc.js', + './desktop/sources/scripts/core/io/midi.js', + './desktop/sources/scripts/core/io/mono.js', + './desktop/sources/scripts/core/io/osc.js', + './desktop/sources/scripts/core/io/udp.js', + './desktop/sources/scripts/clock.js', + './desktop/sources/scripts/commander.js', + './desktop/sources/scripts/cursor.js', + './desktop/sources/scripts/client.js' + +]; + +self.addEventListener( 'install', async function () { + + const cache = await caches.open( 'Orca' ); + + assets.forEach( function ( asset ) { + + cache.add( asset ).catch( function () { + + console.error( '[SW] Cound\'t cache:', asset ); + + } ); + + } ); + +} ); + +self.addEventListener( 'fetch', async function ( event ) { + + const request = event.request; + event.respondWith( cacheFirst( request ) ); + +} ); + +async function cacheFirst( request ) { + + const cachedResponse = await caches.match( request ); + + if ( cachedResponse === undefined ) { + + console.error( '[SW] Not cached:', request.url ); + return fetch( request ); + + } + + return cachedResponse; + +}