From d60a1fc290c500307265c9aee4d3e03151f48731 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Fri, 20 Oct 2023 15:38:08 +0300 Subject: [PATCH] RED-6893: Handled generic errors. --- .../services/global-error-handler.service.ts | 20 ++++++++++++++++++- apps/red-ui/src/assets/i18n/redact/de.json | 9 ++++++++- apps/red-ui/src/assets/i18n/redact/en.json | 9 ++++++++- apps/red-ui/src/assets/i18n/scm/de.json | 9 ++++++++- apps/red-ui/src/assets/i18n/scm/en.json | 9 ++++++++- libs/common-ui | 2 +- 6 files changed, 52 insertions(+), 6 deletions(-) diff --git a/apps/red-ui/src/app/services/global-error-handler.service.ts b/apps/red-ui/src/app/services/global-error-handler.service.ts index 285d8354d..22562a355 100644 --- a/apps/red-ui/src/app/services/global-error-handler.service.ts +++ b/apps/red-ui/src/app/services/global-error-handler.service.ts @@ -1,10 +1,28 @@ -import { ErrorHandler, Injectable } from '@angular/core'; +import { ErrorHandler, Inject, Injectable, Injector } from '@angular/core'; +import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http'; +import { Toaster } from '@iqser/common-ui'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @Injectable() export class GlobalErrorHandler extends ErrorHandler { + constructor(@Inject(Injector) private _injector: Injector) { + super(); + } handleError(error: Error): void { const chunkFailedMessage = /Loading chunk [\d]+ failed/; console.write(error); + if (error.message.includes('HttpErrorResponse')) { + const err = JSON.parse(error.message.split('HttpErrorResponse:')[1]) as HttpErrorResponse; + if (err.status >= HttpStatusCode.BadRequest && err.status <= HttpStatusCode.InternalServerError) { + const toaster = this._injector.get(Toaster); + if (err.error.message) { + toaster.rawError(err.error.message); + } else if ([400, 403, 404, 409, 500].includes(err.status)) { + toaster.rawError(_(`generic-errors.${err.status}`)); + } + } + } + if (error?.message?.includes('An error happened during access validation')) { console.log('User is not authorized to access this page'); } diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 9a9499e91..fc9f30a97 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -2540,5 +2540,12 @@ "select": "Wählen" } }, - "yesterday": "Gestern" + "yesterday": "Gestern", + "generic-errors": { + "400": "", + "403": "", + "404": "", + "409": "", + "500": "" + } } diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index e7025a1f4..4577d50da 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -2545,5 +2545,12 @@ "select": "Select" } }, - "yesterday": "Yesterday" + "yesterday": "Yesterday", + "generic-errors": { + "400": "The sent request is not valid.", + "403": "Access to the requested resource is not allowed.", + "404": "The requested resource could not be found.", + "409": "The request is incompatible with the current state.", + "500": "The server encountered an unexpected condition that prevented it from fulfilling the request." + } } diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index b152a4888..dc15fc295 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -2545,5 +2545,12 @@ "select": "Wählen" } }, - "yesterday": "Gestern" + "yesterday": "Gestern", + "generic-errors": { + "400": "", + "403": "", + "404": "", + "409": "", + "500": "" + } } diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 90476cf5a..97a19f6b2 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2545,5 +2545,12 @@ "select": "Select" } }, - "yesterday": "Yesterday" + "yesterday": "Yesterday", + "generic-errors": { + "400": "The sent request is not valid.", + "403": "Access to the requested resource is not allowed.", + "404": "The requested resource could not be found.", + "409": "The request is incompatible with the current state.", + "500": "The server encountered an unexpected condition that prevented it from fulfilling the request." + } } diff --git a/libs/common-ui b/libs/common-ui index bfaae5adf..a6383c1db 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit bfaae5adf6522a099a55c7f3546dee3b542c4c33 +Subproject commit a6383c1dbc840115897a31567c3f5633ba78b43a