diff --git a/src/app/modules/shared/service/error.service.ts b/src/app/modules/shared/service/error.service.ts index 299cc24..551e26f 100644 --- a/src/app/modules/shared/service/error.service.ts +++ b/src/app/modules/shared/service/error.service.ts @@ -7,22 +7,24 @@ import {AppState} from '../app-state' }) export class ErrorService { private static readonly UNKNOWN_ERROR_MESSAGE = 'Une erreur inconnue est survenue' - private defaultHandledErrorModels: ErrorHandler[] = [{ + 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 === 400, - consumer: error => console.error(error), - messageProducer: () => 'Certaines informations étaient invalides' + messageProducer: () => 'Les données envoyées n\'étaient pas valides' }, { 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 +41,7 @@ export class ErrorService { handleError(response: any) { let matchingModels - if (this.isServerOfflineError(response)) { + if (isServerOfflineError(response)) { this.appState.isServerOnline = false return } @@ -54,7 +56,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 +90,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 +116,6 @@ export class ErrorHandler { } } -const errorHandlers: ErrorHandler[] = [] +function isServerOfflineError(response: any): boolean { + return response.status === 0 && response.statusText === 'Unknown Error' +}