From af5cd7e548447b6aa86b34b069cc4e88c0fd1256 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 5 Jul 2018 14:57:32 +0800 Subject: [PATCH] Unregister old service workers when `Discourse.ServiceWorkerURL` changes. --- .../initializers/register-service-worker.js.es6 | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/assets/javascripts/discourse/initializers/register-service-worker.js.es6 b/app/assets/javascripts/discourse/initializers/register-service-worker.js.es6 index d5c6c460c3f..26d19206ffe 100644 --- a/app/assets/javascripts/discourse/initializers/register-service-worker.js.es6 +++ b/app/assets/javascripts/discourse/initializers/register-service-worker.js.es6 @@ -11,6 +11,19 @@ export default { if (isSupported) { if (Discourse.ServiceWorkerURL && !isSafari) { + navigator.serviceWorker.getRegistrations().then(registrations => { + for (let registration of registrations) { + if ( + registration.active && + !registration.active.scriptURL.includes( + Discourse.ServiceWorkerURL + ) + ) { + registration.unregister(); + } + } + }); + navigator.serviceWorker .register(`${Discourse.BaseUri}/${Discourse.ServiceWorkerURL}`) .catch(error => {