2 lines
1.8 KiB
JavaScript
2 lines
1.8 KiB
JavaScript
typeof workbox<"u"?(workbox.setConfig({debug:!1}),workbox.routing.registerRoute(({request:e})=>["image","style","script"].includes(e.destination),new workbox.strategies.CacheFirst({cacheName:"static-resources",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:50,maxAgeSeconds:30*24*60*60})]})),workbox.routing.registerRoute(/^https?.*/,new workbox.strategies.NetworkFirst({cacheName:"http-calls",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:50,maxAgeSeconds:30*24*60*60})]}))):console.warn("Workbox not loaded, PWA caching features disabled");self.addEventListener("install",e=>{console.log("[SW] Installing...")});self.addEventListener("activate",e=>{console.log("[SW] Activating...")});self.addEventListener("fetch",e=>{e.respondWith(fetch(e.request))});self.addEventListener("message",e=>{e.data&&e.data.type==="SKIP_WAITING"&&(console.log("[SW] Received SKIP_WAITING message"),self.skipWaiting())});self.addEventListener("push",e=>{var n;if(!e.data)return;let t={};try{t=e.data.json()}catch(o){console.error("Push event JSON parse error",o);return}const i={body:t.body||"You have a new message!",icon:t.icon||"/pwa-icon-512.png",badge:t.badge||"/pwa-icon-36.png",vibrate:[100,50,100],data:{url:((n=t.data)==null?void 0:n.url)||"home",dateOfArrival:Date.now(),primaryKey:1}};e.waitUntil(self.registration.showNotification(t.title||"Notification",i))});self.addEventListener("notificationclick",e=>{var i;e.notification.close();const t=((i=e.notification.data)==null?void 0:i.url)||"home";e.waitUntil((async()=>{const n=await clients.matchAll({type:"window",includeUncontrolled:!0});let o="https://nuxt.newinsta.ir";for(const a of n){if(a.url===t&&"focus"in a)return a.focus();o=new URL(a.url).origin}if(clients.openWindow)return clients.openWindow(`${o}/${t}`)})())});
|