Приветствую.
Пытаюсь реализовать всплывающее окно с информацией о выходе новой версии приложения(кэша) и кнопкой "обновить". Связать react и service worker у меня получилось. При изменении версии кэша всплывает окно. По клику на кнопку я вызываю
navigator.serviceWorker.controller.postMessage({type: 'SKIP_WAITING',});
далее я слушаю в sw.js событие message
self.addEventListener('message', event => {
if (event.data && event.data.type === 'SKIP_WAITING') {
const cacheWhitelist = [CACHE_NAME];
event.waitUntil(
caches
.keys()
.then(keyList => {
return Promise.all(
keyList.map(function (key) {
if (cacheWhitelist.indexOf(key) === -1) {
return caches.delete(key);
}
})
);
})
.then(() => self.clients.claim())
);
self.skipWaiting();
}
});
В этом куске кода я ещё думаю как лучше удалить старый кэш. Вопрос в том, как мне перезагрузить страницу пользователя ? Если я перезагружаю страницу в обработчике клика в сплывающем окне, то у меня не успевает отработать удаление кэша, а если я пытаюсь передавать в прослушиватель метод , то приложение ломается. Внутри sw.js я не могу обратиться к объекту window. Подскажите пожалуйста, как я могу перезагрузить страницу или как бы вы сделали это