Files
tytd2025/Tesses.YouTubeDownloader.Server/res/service_worker.js
Mike Nolan c82957cc61
Some checks failed
Build and Deploy on Tag / 🔨 Build for everything else (push) Failing after 11s
Build and Deploy on Tag / 🔨 Build for PowerPC (push) Failing after 20s
Make it a little faster, queue is in sqlite now, fix db bug and more
2026-06-25 15:35:39 -05:00

55 lines
1.3 KiB
JavaScript

const assets = ["<@ASSETS@>"];
const staticCacheName = "tytd-static-<@BUILD_TIME@>";
async function ThrowOnBadGateway(req)
{
const resp = await fetch(req);
if(resp.status === 502) throw new Error("Bad Gateway");
return resp;
}
self.addEventListener('install',evt => {
evt.waitUntil(
caches.open(staticCacheName).then(cache =>{
cache.addAll(assets);
})
);
});
self.addEventListener('activate',(evt)=>{
evt.waitUntil(
caches.keys().then(keys => {
return Promise.all(keys.filter(key => key !== staticCacheName).map(key => caches.delete(key)));
})
);
});
self.addEventListener('fetch', evt => {
evt.respondWith(
caches.match(evt.request).then(cacheRes=>{
console.warn('SW cacheRes:', cacheRes);
return cacheRes || ThrowOnBadGateway(evt.request);
}).catch((err)=>{
console.warn('SW Fallback:', err.message);
if(evt.request.headers.has('HX-Request'))
{
return new Response("",{
status: 200,
headers: {
'HX-Redirect': "/offline.html"
}
});
}
else
{
return caches.match('/offline.html');
}
})
);
});