if (!localStorage.getItem(CACHE_CLEAR_KEY)) {
console.log('Performing emergency cache clear...');
// Clear all service workers
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(registrations => {
return Promise.all(registrations.map(registration => registration.unregister()));
}).then(() => {
console.log('Service workers cleared');
// Clear all caches
if ('caches' in window) {
return caches.keys().then(cacheNames => {
return Promise.all(cacheNames.map(cacheName => caches.delete(cacheName)));
});
}
}).then(() => {
console.log('All caches cleared');
localStorage.setItem(CACHE_CLEAR_KEY, 'true');
console.log('Reloading page...');
window.location.reload();
}).catch(err => {
console.error('Cache clear failed:', err);
localStorage.setItem(CACHE_CLEAR_KEY, 'true');
});
} else {
localStorage.setItem(CACHE_CLEAR_KEY, 'true');
}
}
})();
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/service-worker.js').then(registration => {
console.log('ServiceWorker registration successful.');
}).catch(err => {
console.log('ServiceWorker registration failed: ', err);
});
});
// Reload the page after the new service worker has taken control (Instant Update)
let refreshing = false;
navigator.serviceWorker.addEventListener('controllerchange', () => {
if (refreshing) return;
window.location.reload();
refreshing = true;
});
}