summaryrefslogblamecommitdiffstats
path: root/sw.js
blob: 347ad15e97089b4ec25c15054ed9adbe36113e9a (plain) (tree)
1
2
3
4
5
6
7
8
9
10



                                                                                        
                                                 

                                                                        


                                                                             

















































                                                                                
// Change version to cause cache refresh, sw.js SE NE SME CACHAT aka ne ga dat v assets!
const static_cache_name = "site-static-v0.0.0";
const offlineUrl = "/offline.html";
const assets = [
	"/manifest.json",	// proxy	|
	"/",			// proxy	| proxyjan je tudi sw.js
	"/index.html",		// proxy	|
	"/slike/icons-512.png",	// proxy	| redfox.js je poklican iz
	"/slike/icons-192.png",	// proxy	| vsake proxyjane html strani
	"/manifest.webmanifest",// proxy	| in vsebuje custom skripte,
	"/desktop2.css",	// proxy	| kot na primer sw inštalacijo.
	"/phone2.css",		// proxy	|
	"/pin.svg",		// proxy	|
	"/redfox.js",		// moje		|
	"/slike/home100.svg",	// proxy	|
	"/slike/prPage.svg",	// proxy	|
	"/slike/prSubPage.svg",	// proxy	|
	"/slike/neSubPage.svg",	// proxy	|
	"/slike/nePage.svg",	// proxy	|
	"/slike/keyboard.svg",	// proxy	|
	"/slike/go.svg",	// proxy	|
	"/favicon.png",		// proxy	|
	"/offline.html"		// moje		|
];

self.addEventListener("install", (evt) => {
    evt.waitUntil(
        caches.open(static_cache_name).then((cache) => {
            cache.addAll(assets);
        })
    );
});

// Delete old caches
self.addEventListener("activate", evt => {
    evt.waitUntil(
        caches.keys().then((keys) => {
            return Promise.all(keys
                .filter(key => key !== static_cache_name)
                .map(key => caches.delete(key))
            );
        })
    );
});

self.addEventListener("fetch", (evt) => {
	if (event.request.mode === 'navigate' || // tole ni povsod podprto, zato
		( (event.request.method === 'GET' ||	// če je GET
		event.request.method === 'POST')	// ali POST zahteva
		&& event.request.headers.get('accept').includes('text/html'))) {
		
		event.respondWith(fetch(event.request.url).catch(error => {
			return cacches.match(offlineUrl);
		}));
	} else { // zahteva je za nek resource (css/js/img), ne za stran
		evt.respondWith(caches.match(evt.request).then((cache_res) => {
			return cache_res || fetch(evt.request);
		}))
	}
});