diff options
Diffstat (limited to 'assets/js/pwa.js')
-rw-r--r-- | assets/js/pwa.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/assets/js/pwa.js b/assets/js/pwa.js new file mode 100644 index 0000000..74b3c68 --- /dev/null +++ b/assets/js/pwa.js @@ -0,0 +1,39 @@ +{{ $swfile := resources.Get "/sw.js" }} +{{ $sw := $swfile | resources.Minify }} +if('serviceWorker' in navigator) { + const PREFETCH = true; + const PREFETCH_LINK_RELS = ['index','next', 'prev', 'prefetch']; + function prefetchCache() { + if(navigator.serviceWorker.controller) { + let links = document.querySelectorAll( + PREFETCH_LINK_RELS.map((rel) => { + return 'link[rel='+rel+']'; + }).join(',') + ); + if(links.length > 0) { + Array.from(links) + .map((link) => { + let href = link.getAttribute('href'); + navigator.serviceWorker.controller.postMessage({ + action : 'cache', + url : href, + }); + }); + } + } + } + + navigator.serviceWorker + .register('{{ $sw.Permalink | relURL }}', { scope: '/' }) + .then(() => { + console.log('Service Worker Registered'); + }); + + navigator.serviceWorker + .ready + .then(() => { + if(PREFETCH) { + prefetchCache(); + } + }); +}
\ No newline at end of file |