From 6a23a1212ac73ecdb05f0f199927d02e48c2772b Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Mon, 7 Jun 2021 20:08:02 +0200 Subject: [PATCH] trying to fix service worker --- Dockerfile | 1 + frontend/src/registerServiceWorker.js | 29 +++++++++++---------------- frontend/src/service-worker.js | 12 +++++------ 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index e63da3d..1b92178 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ FROM node:lts-alpine as builder COPY ./frontend . +ENV NODE_ENV=production RUN npm install RUN npm run build FROM python:3.7-slim-stretch diff --git a/frontend/src/registerServiceWorker.js b/frontend/src/registerServiceWorker.js index 3caa896..086f184 100644 --- a/frontend/src/registerServiceWorker.js +++ b/frontend/src/registerServiceWorker.js @@ -2,12 +2,6 @@ import { register } from 'register-service-worker' -const notifyAboutUpdate = worker => { - if (confirm('New version available, update?')) { - worker.postMessage({ action : "skipWaiting"}) - } -} - if (process.env.NODE_ENV === 'production') { register(`${process.env.BASE_URL}service-worker.js`, { ready () { @@ -26,8 +20,9 @@ if (process.env.NODE_ENV === 'production') { console.log('New content is downloading.') }, updated (registration) { - console.log('New content is available; please refresh.') - notifyAboutUpdate(registration.waiting) + console.log('New content is available; please refresh.') + let confirmationResult = confirm("New content found! Do you want to reload the app?") + if (confirmationResult) registration.waiting.postMessage({action: "skipWaiting"}) }, offline () { console.log('No internet connection found. App is running in offline mode.') @@ -35,12 +30,12 @@ if (process.env.NODE_ENV === 'production') { error (error) { console.error('Error during service worker registration:', error) } - }) - - var refreshing; - navigator.serviceWorker.addEventListener("controllerchange", function () { - if (refreshing) return; - window.location.reload(); - refreshing = true; - }) -} + }) + + let refreshing + navigator.serviceWorker.addEventListener("controllerchange", e=>{ + if (refreshing) return + window.location.reload() + refreshing = true + }) +} \ No newline at end of file diff --git a/frontend/src/service-worker.js b/frontend/src/service-worker.js index af0d010..8a0f952 100644 --- a/frontend/src/service-worker.js +++ b/frontend/src/service-worker.js @@ -1,9 +1,9 @@ self.__precacheManifest = [].concat(self.__precacheManifest || []); -workbox.precaching.suppressWarnings() -workbox.precaching.precacheAndRoute(self.__precacheManifest, {}) +workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); -self.addEventListener('message', msg => { - if (msg.data.action == 'skipwaiting') { - self.skipWaiting(); - } +// install new service worker when ok, then reload page. +self.addEventListener("message", msg=>{ + if (msg.data.action=='skipWaiting'){ + self.skipWaiting() + } }) \ No newline at end of file