diff --git a/packages/context/src/lib/context-manager/shared/context.service.ts b/packages/context/src/lib/context-manager/shared/context.service.ts index 0bf5dbc16d..d123d49d95 100644 --- a/packages/context/src/lib/context-manager/shared/context.service.ts +++ b/packages/context/src/lib/context-manager/shared/context.service.ts @@ -1,5 +1,5 @@ import { Injectable, Optional } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; import { BehaviorSubject, Observable, of } from 'rxjs'; import { map, tap, catchError, debounceTime, flatMap } from 'rxjs/operators'; @@ -93,7 +93,9 @@ export class ContextService { const url = `${this.baseUrl}/contexts/${id}/details`; return this.http .get(url) - .pipe(catchError(res => this.handleError(res, id))); + .pipe(catchError(res => { + return this.handleError(res, id) + })); } getDefault(): Observable { @@ -181,16 +183,17 @@ export class ContextService { contextId: string, profil: string, type: TypePermission - ): Observable { + ): Observable { const url = `${this.baseUrl}/contexts/${contextId}/permissions`; const association = { profil, typePermission: type }; - return this.http.post( - url, - JSON.stringify(association) - ); + + return this.http.post(url, JSON.stringify(association)) + .pipe(catchError(res => { + return [this.handleError(res, undefined, true)] + })); } deletePermissionAssociation( @@ -471,19 +474,30 @@ export class ContextService { return `${basePath}/${file}`; } - private handleError(res: Response, uri: string): Message[] { + private handleError(error: HttpErrorResponse, uri: string, permissionError?: boolean): Message[] { const context = this.contexts$.value.ours.find(obj => obj.uri === uri); const titleContext = context ? context.title : uri; - const titleError = this.languageService.translate.instant( + error.error.title = this.languageService.translate.instant( 'igo.context.contextManager.invalid.title' ); - const textError = this.languageService.translate.instant( + error.error.message = this.languageService.translate.instant( 'igo.context.contextManager.invalid.text', { value: titleContext } ); - throw [{ title: titleError, text: textError }]; + error.error.toDisplay = true; + + if (permissionError) { + error.error.title = this.languageService.translate.instant( + 'igo.context.contextManager.errors.addPermissionTitle' + ); + error.error.message = this.languageService.translate.instant( + 'igo.context.contextManager.errors.addPermission' + ); + } + + throw error; } private handleContextsChange( diff --git a/packages/context/src/locale/en.context.json b/packages/context/src/locale/en.context.json index 45bd85d6b8..4346b773b3 100644 --- a/packages/context/src/locale/en.context.json +++ b/packages/context/src/locale/en.context.json @@ -29,7 +29,9 @@ "uncaught": { "message": "Sorry, service is currently not available. Please try again later", "title": "Error server" - } + }, + "addPermission": "The permission you are trying to add is already in the context.", + "addPermissionTitle": "Add permission error" }, "favorite": "Favorite", "form": { diff --git a/packages/context/src/locale/fr.context.json b/packages/context/src/locale/fr.context.json index 077537eca1..e1c980089b 100644 --- a/packages/context/src/locale/fr.context.json +++ b/packages/context/src/locale/fr.context.json @@ -29,7 +29,9 @@ "uncaught": { "message": "Désolé! Le service que vous voulez utiliser n’est malheureusement pas disponible pour le moment. Essayez plus tard!", "title": "Erreur de serveur" - } + }, + "addPermission": "La permission que vous tentez d'ajouter est déjà présente dans le contexte.", + "addPermissionTitle": "Erreur d'ajout de permission" }, "favorite": "Favori", "form": {