// 'use strict'
// // currently not used as we ise next-pwa and in next.config.js we have withPWA.
// // maybe we can have withPWA({sw: './worker.js'}) ?
// console.log('Service Worker worker/index.js Loaded...')
// workbox.precaching.precacheAndRoute(self.__WB_MANIFEST);


// self.addEventListener('install', () => {
//     console.log('service worker installed')
// });

// self.addEventListener('activate', () => {
//     console.log('service worker activated')
// });

// self.addEventListener('fetch', (event) => {
//     try {
//         console.log('Fetch event for ', event.request.url);
//         if (event.request.url.includes('/api/auth/callback/')) {
//             // Use network only strategy for auth routes, or bypass SW completely
//             event.respondWith(fetch(event.request));
//             return;
//         }
//         // other caching strategies...
//     } catch (error) {
//         console.error(error)
//     }
// });

// self.addEventListener('push', function (event) {
//     console.log('Push message', event)
//     if (!(self.Notification && self.Notification.permission === 'granted')) {
//         return
//     }
//     const data = JSON.parse(event.data.text())
//     event.waitUntil(
//         registration.showNotification(data.title, {
//             body: data.message,
//             icon: '/icons/android-chrome-192x192.png'
//         })
//     )
// })

// self.addEventListener('notificationclick', function (event) {
//     console.log('Notification click: tag', event.notification.tag)
//     event.notification.close()
//     event.waitUntil(
//         clients.matchAll({ type: 'window', includeUncontrolled: true }).then(function (clientList) {
//             if (clientList.length > 0) {
//                 let client = clientList[0]
//                 for (let i = 0; i < clientList.length; i++) {
//                     if (clientList[i].focused) {
//                         client = clientList[i]
//                     }
//                 }
//                 return client.focus()
//             }
//             return clients.openWindow('/')
//         })
//     )
// })

// // self.addEventListener('pushsubscriptionchange', function(event) {
// //   event.waitUntil(
// //       Promise.all([
// //           Promise.resolve(event.oldSubscription ? deleteSubscription(event.oldSubscription) : true),
// //           Promise.resolve(event.newSubscription ? event.newSubscription : subscribePush(registration))
// //               .then(function(sub) { return saveSubscription(sub) })
// //       ])
// //   )
// // })