jank-client-fork/webpage/service.js
MathMan05 c794ae46c7 Added service worker support, needs work
You must manually enable support, I'm not having it on untill it'll work without issues all of the time :P
2024-06-17 16:16:57 -05:00

87 lines
2.4 KiB
JavaScript

function deleteoldcache(){
caches.delete("cache");
console.log("this ran :P")
}
async function putInCache(request, response){
console.log(request,response);
const cache = await caches.open('cache');
console.log("Grabbed")
try{
console.log(await cache.put(request, response));
}catch(error){
console.error(error);
}
};
console.log("test");
let lastcache
self.addEventListener("activate", async (event) => {
console.log("test2");
checkCache();
})
async function checkCache(){
if(checkedrecently){
return;
}
promise=await caches.match("/getupdates");
if(promise){
lastcache= await promise.text();
}
console.log(lastcache);
fetch("/getupdates").then(async data=>{
text=await data.clone().text();
console.log(text,lastcache)
if(lastcache!==text){
deleteoldcache();
putInCache("/getupdates",data.clone());
}
checkedrecently=true;
setTimeout(_=>{checkedrecently=false},1000*60*30);
})
}
var checkedrecently=false;
function samedomain(url){
return new URL(url).origin===self.origin;
}
function isindexhtml(url){
console.log(url);
if(new URL(url).pathname.startsWith("/channels")){
return true;
}
return false;
}
async function getfile(event){
checkCache();
if(!samedomain(event.request.url)){
return await fetch(event.request.clone());
}
const responseFromCache = await caches.match(event.request.url);
console.log(responseFromCache,caches);
if (responseFromCache) {
console.log("cache hit")
return responseFromCache;
}
if(isindexhtml(event.request.url)){
console.log("is index.html")
const responseFromCache = await caches.match("/index.html");
if (responseFromCache) {
console.log("cache hit")
return responseFromCache;
}
const responseFromNetwork = await fetch("/index.html");
await putInCache("/index.html",responseFromNetwork.clone());
return responseFromNetwork;
}
const responseFromNetwork = await fetch(event.request.clone());
console.log(event.request.clone());
await putInCache(event.request.clone(),responseFromNetwork.clone());
try{
return responseFromNetwork;
}catch(e){console.error(e)}
}
self.addEventListener('fetch', (event) => {
try{
event.respondWith(getfile(event));
}catch(e){console.error(e)}
})