From f93a104d689a33d8b5c0ccb6686db0115a9d8e1e Mon Sep 17 00:00:00 2001 From: Kristof De Langhe <kristof.delanghe@atmire.com> Date: Fri, 26 Jul 2019 10:37:51 +0200 Subject: [PATCH] 63945: deleteAndReturnResponse on data-service --- src/app/core/data/data.service.ts | 33 +++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/app/core/data/data.service.ts b/src/app/core/data/data.service.ts index fc4da69a5c..5693b31d2a 100644 --- a/src/app/core/data/data.service.ts +++ b/src/app/core/data/data.service.ts @@ -284,6 +284,34 @@ export abstract class DataService<T extends CacheableObject> { * Return an observable that emits true when the deletion was successful, false when it failed */ delete(dso: T): Observable<boolean> { + const requestId = this.deleteAndReturnRequestId(dso); + + return this.requestService.getByUUID(requestId).pipe( + find((request: RequestEntry) => request.completed), + map((request: RequestEntry) => request.response.isSuccessful) + ); + } + + /** + * Delete an existing DSpace Object on the server + * @param dso The DSpace Object to be removed + * Return an observable of the completed response + */ + deleteAndReturnResponse(dso: T): Observable<RestResponse> { + const requestId = this.deleteAndReturnRequestId(dso); + + return this.requestService.getByUUID(requestId).pipe( + find((request: RequestEntry) => request.completed), + map((request: RequestEntry) => request.response) + ); + } + + /** + * Delete an existing DSpace Object on the server + * @param dso The DSpace Object to be removed + * Return the delete request's ID + */ + deleteAndReturnRequestId(dso: T): string { const requestId = this.requestService.generateRequestId(); const hrefObs = this.halService.getEndpoint(this.linkPath).pipe( @@ -297,10 +325,7 @@ export abstract class DataService<T extends CacheableObject> { }) ).subscribe(); - return this.requestService.getByUUID(requestId).pipe( - find((request: RequestEntry) => request.completed), - map((request: RequestEntry) => request.response.isSuccessful) - ); + return requestId; } /** -- GitLab