@@ -37,6 +37,7 @@ import { lazyObservablePromise } from '../util/observable';
3737import  {  persist ,  hydrate  }  from  '../util/mobx-persist/persist' ; 
3838import  {  isValidPort  }  from  './network' ; 
3939import  {  serverVersion  }  from  '../services/service-versions' ; 
40+ import  {  DesktopApi  }  from  '../services/desktop-api' ; 
4041
4142type  HtkAdminClient  = 
4243    // WebRTC is only supported for new servers: 
@@ -224,16 +225,29 @@ export class ProxyStore {
224225    } ) ; 
225226
226227    private  monitorRemoteClientConnection ( client : PluggableAdmin . AdminClient < { } > )  { 
227-         client . on ( 'admin-client: stream-error' ,  ( err )  =>  { 
228+         client . on ( 'stream-error' ,  ( err )  =>  { 
228229            console . log ( 'Admin client stream error' ) ; 
229230            logError ( err . message  ? err  : new  Error ( 'Client stream error' ) ,  {  cause : err  } ) ; 
230231        } ) ; 
231-         client . on ( 'admin-client: subscription-error' ,  ( err )  =>  { 
232+         client . on ( 'subscription-error' ,  ( err )  =>  { 
232233            console . log ( 'Admin client subscription error' ) ; 
233234            logError ( err . message  ? err  : new  Error ( 'Client subscription error' ) ,  {  cause : err  } ) ; 
234235        } ) ; 
235-         client . on ( 'admin-client: stream-reconnect-failed' ,  ( err )  =>  { 
236+         client . on ( 'stream-reconnect-failed' ,  ( err )  =>  { 
236237            logError ( err . message  ? err  : new  Error ( 'Client reconnect error' ) ,  {  cause : err  } ) ; 
238+ 
239+             alert ( "Server disconnected unexpectedly, app restart required.\n\nPlease report this at github.com/httptoolkit/httptoolkit." ) ; 
240+             setTimeout ( ( )  =>  {  // Tiny wait for any other UI events to fire (error reporting/logging/other UI responsiveness) 
241+                 if  ( DesktopApi . restartApp )  { 
242+                     // Where possible (recent desktop release) we restart the whole app directly 
243+                     DesktopApi . restartApp ( ) ; 
244+                 }  else  if  ( ! navigator . platform ?. startsWith ( 'Mac' ) )  { 
245+                     // If not, on Windows & Linux we just close the window (which restarts) 
246+                     window . close ( ) ; 
247+                 } 
248+                 // On Mac, app exit is independent from window exit, so we can't force that here, 
249+                 // but hopefully this alert will lead the user to do so themselves. 
250+             } ,  10 ) ; 
237251        } ) ; 
238252    } 
239253
0 commit comments