diff --git a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts index 7c2543e2a0..bb8c48b679 100644 --- a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts +++ b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts @@ -234,6 +234,10 @@ function handleMessage(e: MessageEvent) { if (e.data === 'BLAZOR_STARTED') { createAssetsCache(true); } + + if (e.data === 'CLEAN_UP') { + deleteOldCaches(); // remove the old caches + } } // ============================================================================ diff --git a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts index 931333ecdb..576e2a1d15 100644 --- a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts +++ b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts @@ -1,4 +1,4 @@ -var BitBswup = BitBswup || {}; +var BitBswup = BitBswup || {}; BitBswup.version = window['bit-bswup version'] = '10.2.1-pre-01'; (function () { @@ -19,6 +19,7 @@ BitBswup.version = window['bit-bswup version'] = '10.2.1-pre-01'; startBlazor(); let reload: () => void; + let cleanup: () => void; let blazorStartResolver: (value: unknown) => void; try { @@ -39,7 +40,7 @@ BitBswup.version = window['bit-bswup version'] = '10.2.1-pre-01'; function prepareRegistration(reg) { reload = () => { if (navigator.serviceWorker.controller) { - reg.waiting && reg.waiting.postMessage('SKIP_WAITING'); + reg.waiting?.postMessage('SKIP_WAITING'); return Promise.resolve(); } @@ -51,6 +52,11 @@ BitBswup.version = window['bit-bswup version'] = '10.2.1-pre-01'; window.location.reload(); }; + cleanup = () => { + reg.waiting?.postMessage('CLEAN_UP'); + reg.active?.postMessage('CLEAN_UP'); + }; + if (reg.waiting) { info('registration waiting:', reg.waiting); if (reg.installing) { @@ -128,13 +134,13 @@ BitBswup.version = window['bit-bswup version'] = '10.2.1-pre-01'; if (data.percent >= 100) { const firstInstall = !(navigator.serviceWorker.controller); - handle(BswupMessage.downloadFinished, { reload, firstInstall }); + handle(BswupMessage.downloadFinished, { reload, cleanup, firstInstall }); } } if (type === 'bypass') { const firstInstall = data?.firstTime || !(navigator.serviceWorker.controller); - handle(BswupMessage.downloadFinished, { reload, firstInstall }); + handle(BswupMessage.downloadFinished, { reload, cleanup, firstInstall }); } if (type === 'activate') {