From db39e4432a5e3d64f8d212a6153e47719e6a938d Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Mon, 11 Oct 2021 21:46:25 -0600 Subject: [PATCH] global error handling in order to reload page on chunk failed --- ui/src/app/app.module.ts | 4 +++- ui/src/app/services/global-error-handler.service.ts | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 ui/src/app/services/global-error-handler.service.ts diff --git a/ui/src/app/app.module.ts b/ui/src/app/app.module.ts index f56763df1..be3e7adfa 100644 --- a/ui/src/app/app.module.ts +++ b/ui/src/app/app.module.ts @@ -1,4 +1,4 @@ -import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core' +import { NgModule, CUSTOM_ELEMENTS_SCHEMA, ErrorHandler } from '@angular/core' import { BrowserModule } from '@angular/platform-browser' import { RouteReuseStrategy } from '@angular/router' import { IonicModule, IonicRouteStrategy, IonNav } from '@ionic/angular' @@ -21,6 +21,7 @@ import { SharingModule } from './modules/sharing.module' import { FormBuilder } from '@angular/forms' import { GenericInputComponentModule } from './modals/generic-input/generic-input.component.module' import { AuthService } from './services/auth.service' +import { GlobalErrorHandler } from './services/global-error-handler.service' @NgModule({ declarations: [AppComponent], @@ -57,6 +58,7 @@ import { AuthService } from './services/auth.service' useFactory: PatchDbServiceFactory, deps: [ConfigService, ApiService, LocalStorageBootstrap, AuthService], }, + { provide: ErrorHandler, useClass: GlobalErrorHandler}, ], bootstrap: [AppComponent], schemas: [ CUSTOM_ELEMENTS_SCHEMA ], diff --git a/ui/src/app/services/global-error-handler.service.ts b/ui/src/app/services/global-error-handler.service.ts new file mode 100644 index 000000000..ac0bb9824 --- /dev/null +++ b/ui/src/app/services/global-error-handler.service.ts @@ -0,0 +1,13 @@ +import { ErrorHandler, Injectable } from '@angular/core' + +@Injectable() +export class GlobalErrorHandler implements ErrorHandler { + + handleError (error: any): void { + const chunkFailedMessage = /Loading chunk [\d]+ failed/ + + if (chunkFailedMessage.test(error.message)) { + window.location.reload() + } + } +} \ No newline at end of file