@@ -159,6 +159,35 @@ if (window.location.search.indexOf("testEnvironment") > -1) {
159159 } ) ;
160160}
161161
162+ function _unregisterServiceWorkers ( ) {
163+ return new Promise ( resolve => {
164+ if ( 'serviceWorker' in navigator ) {
165+ console . warn ( "Recovering boot: unregistering all service workers..." ) ;
166+ navigator . serviceWorker . getRegistrations ( ) . then ( ( registrations ) => {
167+ const unregisterPromises = [ ] ;
168+ for ( let registration of registrations ) {
169+ console . warn ( "Recovering boot: unregistering" , registration . scope ) ;
170+ unregisterPromises . push ( registration . unregister ( ) ) ;
171+ }
172+ Promise . allSettled ( unregisterPromises )
173+ . catch ( console . error )
174+ . then ( ( ) => {
175+ console . warn ( "Recovering boot: Success, unregistered all service workers!" ) ;
176+ resolve ( ) ;
177+ } ) ;
178+ } ) . catch ( err => {
179+ console . error ( "Error getting service worker registrations for boot recovery!!!" , err ) ;
180+ window . logger && window . logger . reportError ( err ,
181+ 'Critical error Recovering boot, while resetting service worker registrations' ) ;
182+ // wait for 2 more seconds for the error to be reported to bugsnag before reloading page.
183+ setTimeout ( resolve , 2000 ) ;
184+ } ) ;
185+ } else {
186+ resolve ( ) ;
187+ }
188+ } ) ;
189+ }
190+
162191define ( function ( require ) {
163192
164193
@@ -176,9 +205,12 @@ define(function (require) {
176205 if ( window . _resetCacheIfNeeded ) {
177206 window . _resetCacheIfNeeded ( true )
178207 . finally ( ( ) => {
179- // wait for 3 seconds for bugsnag to send report.
208+ // wait for 3 seconds for bugsnag to send report and service workers to be active .
180209 setTimeout ( ( ) => {
181- location . reload ( ) ;
210+ _unregisterServiceWorkers ( )
211+ . then ( ( ) => {
212+ location . reload ( ) ;
213+ } ) ;
182214 } , 3000 ) ;
183215 } ) ;
184216 } else {
0 commit comments