You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
let p = console.log
|
|
|
|
|
|
|
|
const app_prefix = "fuzzyhome_cache"
|
|
|
|
const version = "0.0.7"
|
|
|
|
|
|
|
|
const cache_name = "{app_prefix}-{version}"
|
|
|
|
|
|
|
|
let urls = [
|
|
|
|
'./',
|
|
|
|
'./__assets__/all.css'
|
|
|
|
'./__assets__/app/client.js'
|
|
|
|
'./__assets__/app/client.css'
|
|
|
|
]
|
|
|
|
|
|
|
|
self.addEventListener('fetch', &) do |e|
|
|
|
|
|
|
|
|
def intercept request
|
|
|
|
if request
|
|
|
|
p `{cache_name} responding with cache : {e.request.url}`
|
|
|
|
request
|
|
|
|
else
|
|
|
|
p `{cache_name} not cached, fetching : {e.request.url}`
|
|
|
|
fetch e.request
|
|
|
|
|
|
|
|
e.respondWith(caches.match(e.request.url).then(intercept))
|
|
|
|
|
|
|
|
self.addEventListener('install', &) do |e|
|
|
|
|
p `{cache_name} install`
|
|
|
|
|
|
|
|
def add_urls_to_cache cache
|
|
|
|
p `{cache_name} installing cache : {cache_name}`
|
|
|
|
cache.addAll urls
|
|
|
|
skipWaiting! # [TODO]: Export this and import to settings component and have manual update button
|
|
|
|
|
|
|
|
e.waitUntil(caches.open(cache_name).then(add_urls_to_cache))
|
|
|
|
|
|
|
|
|
|
|
|
self.addEventListener('activate', &) do |e|
|
|
|
|
p `{cache_name} activate`
|
|
|
|
|
|
|
|
def delete_cached keys
|
|
|
|
|
|
|
|
let temp = keys.map(&) do |key, i|
|
|
|
|
if key !== cache_name
|
|
|
|
p `{cache_name} deleting cache : {keys[i]}`
|
|
|
|
caches.delete keys[i]
|
|
|
|
|
|
|
|
Promise.all(temp)
|
|
|
|
|
|
|
|
e.waitUntil(caches.keys().then(delete_cached))
|