From 1fc9359133f66d7a05447d0076cfe9218c3ffa18 Mon Sep 17 00:00:00 2001 From: Kristof De Langhe Date: Mon, 29 Oct 2018 16:04:18 +0100 Subject: [PATCH] 54472: Refactored create to work with new response cache --- src/app/core/data/data.service.ts | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/app/core/data/data.service.ts b/src/app/core/data/data.service.ts index ed32021f34..6a82577aa5 100644 --- a/src/app/core/data/data.service.ts +++ b/src/app/core/data/data.service.ts @@ -25,7 +25,7 @@ import { NotificationsService } from '../../shared/notifications/notifications.s import { HttpClient } from '@angular/common/http'; import { configureRequest, - filterSuccessfulResponses, + filterSuccessfulResponses, getResourceLinksFromResponse, getResponseFromEntry } from '../shared/operators'; import { DSOSuccessResponse, ErrorResponse, RestResponse } from '../cache/response.models'; @@ -138,13 +138,15 @@ export abstract class DataService const request$ = endpoint$.pipe( take(1), - map((endpoint: string) => new CreateRequest(requestId, endpoint, dso)), - configureRequest(this.requestService) + map((endpoint: string) => new CreateRequest(requestId, endpoint, dso)) ); - const selfLink$ = request$.pipe( - map((restRequest: RestRequest) => restRequest.href), - switchMap((href: string) => this.requestService.getByHref(href)), + // Execute the post request + request$.pipe( + configureRequest(this.requestService) + ).subscribe(); + + const selfLink$ = this.requestService.getByUUID(requestId).pipe( getResponseFromEntry(), map((response: RestResponse) => { if (!response.isSuccessful && response instanceof ErrorResponse) { @@ -153,13 +155,17 @@ export abstract class DataService return response; } }), - filterSuccessfulResponses(), - map((response: DSOSuccessResponse) => { - return response.resourceSelfLinks[0]; + map((response: any) => { + if (isNotEmpty(response.resourceSelfLinks)) { + return response.resourceSelfLinks[0]; + } }), distinctUntilChanged() ) as Observable; - return this.rdbService.buildSingle(selfLink$) as Observable>; + + return selfLink$.pipe( + switchMap((selfLink: string) => this.findByHref(selfLink)), + ) } }