Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wlh320/hugo-theme-hulga.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/pwa.js')
-rw-r--r--assets/js/pwa.js39
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