Skip to content
Snippets Groups Projects
Commit 260ddd97 authored by Kristof De Langhe's avatar Kristof De Langhe
Browse files

54472: request created dso

parent e7c5a2a2
No related branches found
No related tags found
No related merge requests found
import { Component } from '@angular/core';
import { Community } from '../../core/shared/community.model';
import { ComColDataService } from '../../core/data/comcol-data.service';
import { NormalizedCommunity } from '../../core/cache/models/normalized-community.model';
import { CommunityDataService } from '../../core/data/community-data.service';
import { ResponseCacheEntry } from '../../core/cache/response-cache.reducer';
import { DSOSuccessResponse, ErrorResponse, RestResponse } from '../../core/cache/response-cache.models';
import { ErrorResponse } from '../../core/cache/response-cache.models';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operators';
import { RouteService } from '../../shared/services/route.service';
import { Router } from '@angular/router';
import { RemoteData } from '../../core/data/remote-data';
......
......@@ -18,20 +18,17 @@ import {
} from './request.models';
import { RequestService } from './request.service';
import { NormalizedObject } from '../cache/models/normalized-object.model';
import { distinctUntilChanged, map, share, withLatestFrom } from 'rxjs/operators';
import { distinctUntilChanged, map, share, switchMap, withLatestFrom } from 'rxjs/operators';
import {
configureRequest,
filterSuccessfulResponses,
getRequestFromSelflink,
getResponseFromSelflink
} from '../shared/operators';
import { ResponseCacheEntry } from '../cache/response-cache.reducer';
import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service';
import { HttpHeaders } from '@angular/common/http';
import { ErrorResponse, GenericSuccessResponse } from '../cache/response-cache.models';
import { BrowseEntry } from '../shared/browse-entry.model';
import { DSOSuccessResponse } from '../cache/response-cache.models';
import { AuthService } from '../auth/auth.service';
import { NotificationsService } from '../../shared/notifications/notifications.service';
export abstract class DataService<TNormalized extends NormalizedObject, TDomain> {
protected abstract responseCache: ResponseCacheService;
......@@ -130,18 +127,16 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain>
);
const href$ = request$.pipe(map((request: RestRequest) => request.href));
const requestEntry$ = href$.pipe(getRequestFromSelflink(this.requestService));
const responseCache$ = href$.pipe(getResponseFromSelflink(this.responseCache));
const payload$ = responseCache$.pipe(
const dsoHref$ = responseCache$.pipe(
filterSuccessfulResponses(),
map((entry: ResponseCacheEntry) => entry.response),
map((response: GenericSuccessResponse<TDomain>) => response.payload),
map((response: DSOSuccessResponse) => response.resourceSelfLinks[0]),
distinctUntilChanged()
);
return this.rdbService.toRemoteDataObservable(requestEntry$, responseCache$, payload$);
return this.rdbService.buildSingle(dsoHref$);
}
public abstract buildCreateParams(dso: TDomain): Observable<string>;
......
......@@ -12,6 +12,7 @@ import { RestRequest } from './request.models';
import { ResponseParsingService } from './parsing.service';
import { BaseResponseParsingService } from './base-response-parsing.service';
import { isNotEmpty } from '../../shared/empty.util';
@Injectable()
export class DSOResponseParsingService extends BaseResponseParsingService implements ResponseParsingService {
......@@ -27,8 +28,11 @@ export class DSOResponseParsingService extends BaseResponseParsingService implem
parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
const processRequestDTO = this.process<NormalizedObject,ResourceType>(data.payload, request.href);
const selfLinks = this.flattenSingleKeyObject(processRequestDTO).map((no) => no.self);
return new DSOSuccessResponse(selfLinks, data.statusCode, this.processPageInfo(data.payload))
let selfLinks = [];
if (processRequestDTO !== undefined) {
selfLinks = this.flattenSingleKeyObject(processRequestDTO).map((no) => no.self);
}
return new DSOSuccessResponse(selfLinks, data.statusCode, (isNotEmpty(data.payload) ? this.processPageInfo(data.payload) : null))
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment