diff --git a/src/app/components/Header.jsx b/src/app/components/Header.jsx index 4df4199b..a97a88d4 100644 --- a/src/app/components/Header.jsx +++ b/src/app/components/Header.jsx @@ -81,6 +81,7 @@ export default class Header extends TranslatedComponent { this._getAnnouncementsMenu = this._getAnnouncementsMenu.bind(this); this._openSettings = this._openMenu.bind(this, 'settings'); this._showHelp = this._showHelp.bind(this); + this.update = this.update.bind(this); this.languageOptions = []; this.insuranceOptions = []; this.state = { @@ -560,6 +561,15 @@ export default class Header extends TranslatedComponent { } } + async update() { + const reg = await navigator.serviceWorker.getRegistration(); + if (!reg || !reg.waiting) { + return; + } + reg.waiting.postMessage('skipWaiting'); + window.location.reload(); + } + /** * Render the header * @return {React.Component} Header @@ -570,7 +580,7 @@ export default class Header extends TranslatedComponent { let hasBuilds = Persist.hasBuilds(); return (
- {this.props.appCacheUpdate &&
window.location.reload() }>{translate('PHRASE_UPDATE_RDY')}
} + {this.props.appCacheUpdate &&
{translate('PHRASE_UPDATE_RDY')}
} {this.props.appCacheUpdate ? {'View Release Changes'} : null} diff --git a/src/images/logo/manifest.json b/src/images/logo/manifest.json index 3c341b8a..828229e4 100755 --- a/src/images/logo/manifest.json +++ b/src/images/logo/manifest.json @@ -27,7 +27,7 @@ "density": "4.0" } ], - "start_url": "https:\/\/edcd.coriolis.io", + "start_url": "https:\/\/coriolis.io", "display": "standalone", "orientation": "portrait" } diff --git a/src/sw.js b/src/sw.js index 16281362..c4cecd65 100644 --- a/src/sw.js +++ b/src/sw.js @@ -42,31 +42,39 @@ if (workbox) { } else { console.log('Boo! Workbox didn\'t load 😬'); } -(async() => { - if (event.request.mode === 'navigate' && registration.waiting) { - if ((await clients.matchAll()).length < 2) { - registration.waiting.postMessage('skipWaiting'); - } - } -})(); -addEventListener('message', messageEvent => { - if (messageEvent.data === 'skipWaiting') return skipWaiting(); + +self.addEventListener('message', event => { + if (!event.data) { + return; + } + + switch (event.data) { + case 'skipWaiting': + self.skipWaiting(); + break; + default: + // NOOP + break; + } }); -addEventListener('fetch', event => { - event.respondWith( - (async() => { - if ( - event.request.mode === 'navigate' && - event.request.method === 'GET' && - registration.waiting && - (await clients.matchAll()).length < 2 - ) { - registration.waiting.postMessage('skipWaiting'); - return new Response('', { headers: { Refresh: '0' } }); - } - return (await caches.match(event.request)) || fetch(event.request); - })() - ); +self.addEventListener('fetch', function(event) { + console.log('Handling fetch event for', event.request.url); + + event.respondWith( + caches.match(event.request).then(function(response) { + if (response) { + return response; + } + + return fetch(event.request) + .then(function(response) { + return response; + }) + .catch(function(error) { + return caches.match(OFFLINE_URL); + }); + }) + ); });