From 6b06c9ec133b47b4c90549eefbe655d568ebbc82 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Sat, 17 Apr 2021 17:37:01 -0400 Subject: [PATCH 1/2] =?UTF-8?q?Correction:=20les=20gestionnaires=20d'erreu?= =?UTF-8?q?rs=20par=20d=C3=A9faut=20n'=C3=A9taient=20pas=20d=C3=A9finis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/shared/service/error.service.ts | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/app/modules/shared/service/error.service.ts b/src/app/modules/shared/service/error.service.ts index 299cc24..7c033e6 100644 --- a/src/app/modules/shared/service/error.service.ts +++ b/src/app/modules/shared/service/error.service.ts @@ -7,22 +7,21 @@ import {AppState} from '../app-state' }) export class ErrorService { private static readonly UNKNOWN_ERROR_MESSAGE = 'Une erreur inconnue est survenue' - private defaultHandledErrorModels: ErrorHandler[] = [{ - filter: error => error.status === 400, - consumer: error => console.error(error), - messageProducer: () => 'Certaines informations étaient invalides' + private static readonly DEFAULT_ERROR_HANDLERS: ErrorHandler[] = [{ + filter: error => error.type.startsWith('notfound'), + messageProducer: () => 'Une ressource demandée n\'a pas été trouvée' + }, { + filter: error => error.type.startsWith('exists'), + messageProducer: () => 'Un conflit avec une autre ressource s\'est produit' + }, { + filter: error => error.type.startsWith('cannotdelete'), + messageProducer: () => 'Une ressource n\'a pas pu être supprimée' }, { filter: error => error.status === 401, messageProducer: () => 'Vous devez être connecté pour effectuer cette action' }, { filter: error => error.status === 403, messageProducer: () => 'Vous n\'avez pas la permission d\'effectuer cette action' - }, { - filter: error => error.status === 404, - messageProducer: () => 'La resource demandée n\'a pas été trouvée' - }, { - filter: error => error.status === 409, - messageProducer: () => 'Un conflit avec une autre resource s\'est produit' }, { filter: error => error.status === 500, messageProducer: () => ErrorService.UNKNOWN_ERROR_MESSAGE @@ -39,7 +38,7 @@ export class ErrorService { handleError(response: any) { let matchingModels - if (this.isServerOfflineError(response)) { + if (isServerOfflineError(response)) { this.appState.isServerOnline = false return } @@ -54,7 +53,7 @@ export class ErrorService { } if (!matchingModels || matchingModels.length == 0) { // If none are found, search in defaults handlers - matchingModels = errorHandlers.filter(m => m.filter(error)) + matchingModels = ErrorService.DEFAULT_ERROR_HANDLERS.filter(m => m.filter(error)) } if (!matchingModels || matchingModels.length == 0) { // If still none are found, handle as an unknown error @@ -88,10 +87,6 @@ export class ErrorService { set activeErrorHandler(handler: ErrorHandlerComponent) { this.activeHandler = handler } - - private isServerOfflineError(response: any): boolean { - return response.status === 0 && response.statusText === 'Unknown Error' - } } /** @@ -118,4 +113,6 @@ export class ErrorHandler { } } -const errorHandlers: ErrorHandler[] = [] +function isServerOfflineError(response: any): boolean { + return response.status === 0 && response.statusText === 'Unknown Error' +} From 27cdbd00e52caa805aba0fc651bb0094b2839d90 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Sat, 17 Apr 2021 19:50:59 -0400 Subject: [PATCH 2/2] =?UTF-8?q?Correction:=20les=20gestionnaires=20d'erreu?= =?UTF-8?q?rs=20par=20d=C3=A9faut=20n'=C3=A9taient=20pas=20d=C3=A9finis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/modules/shared/service/error.service.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/app/modules/shared/service/error.service.ts b/src/app/modules/shared/service/error.service.ts index 7c033e6..551e26f 100644 --- a/src/app/modules/shared/service/error.service.ts +++ b/src/app/modules/shared/service/error.service.ts @@ -16,6 +16,9 @@ export class ErrorService { }, { filter: error => error.type.startsWith('cannotdelete'), messageProducer: () => 'Une ressource n\'a pas pu être supprimée' + }, { + filter: error => error.status === 400, + messageProducer: () => 'Les données envoyées n\'étaient pas valides' }, { filter: error => error.status === 401, messageProducer: () => 'Vous devez être connecté pour effectuer cette action'