uwuzu/sw.js

89 lines
2.8 KiB (Stored with Git LFS)
JavaScript

var CACHE_VERSION = 'uwuzu-cache-v1';
var resources = [
"/css/color.css",
"/css/font.css",
"/css/home.css",
"/home/index.php",
"/unsupported.php",
"/img/sysimage/menuicon/addemoji.svg",
"/img/sysimage/menuicon/addnotice.svg",
"/img/sysimage/menuicon/bookmark.svg",
"/img/sysimage/menuicon/emoji.svg",
"/img/sysimage/menuicon/home.svg",
"/img/sysimage/menuicon/info.svg",
"/img/sysimage/menuicon/logout.svg",
"/img/sysimage/menuicon/menu.svg",
"/img/sysimage/menuicon/notice.svg",
"/img/sysimage/menuicon/notification.svg",
"/img/sysimage/menuicon/notification2.svg",
"/img/sysimage/menuicon/others.svg",
"/img/sysimage/menuicon/privacypolicy.svg",
"/img/sysimage/menuicon/profile.svg",
"/img/sysimage/menuicon/search.svg",
"/img/sysimage/menuicon/server.svg",
"/img/sysimage/menuicon/settings.svg",
"/img/sysimage/menuicon/terms.svg",
"/img/sysimage/menuicon/useradmin.svg"
];
self.addEventListener('install', function (e) {
e.waitUntil(
caches.open(CACHE_VERSION).then(function (cache) {
return cache.addAll(resources);
})
);
});
self.addEventListener('fetch', function (e) {
if (!(e.request.url.indexOf('http') === 0)) return;
if (e.request.method !== 'GET') {
return;
}
const url = new URL(e.request.url);
const pathname = url.pathname;
if (resources.includes(pathname)) {
e.respondWith(
caches.match(e.request).then(function (response) {
if (response) {
return response;
}
return fetch(e.request);
})
);
} else {
e.respondWith(fetch(e.request));
}
});
self.addEventListener('message', function (e) {
if (e.data && e.data.action === 'clearCache') {
caches.keys().then(function (cacheNames) {
Promise.all(
cacheNames.map(function (cacheName) {
if (cacheName === CACHE_VERSION) {
return caches.delete(cacheName);
}
})
).then(function (results) {
if (results.includes(true)) {
console.log('キャッシュを削除しました');
caches.open(CACHE_VERSION).then(function (cache) {
cache.addAll(resources).then(function () {
console.log('リソースを再キャッシュしました');
}).catch(function (error) {
console.error('リソースの再キャッシュに失敗しました:', error);
});
});
} else {
console.log('キャッシュ削除に失敗しました');
}
});
});
}
});