refactoring

This commit is contained in:
lotte
2018-09-17 08:47:30 +02:00
parent 6aee6e668c
commit 9da839e318
6 changed files with 17 additions and 65 deletions

View File

@@ -18,20 +18,18 @@ import {
} from './request.models';
import { RequestService } from './request.service';
import { NormalizedObject } from '../cache/models/normalized-object.model';
import { distinctUntilChanged, flatMap, map, switchMap, take, withLatestFrom } from 'rxjs/operators';
import { distinctUntilChanged, first, map, take, tap } from 'rxjs/operators';
import {
configureRequest,
filterSuccessfulResponses,
getResponseFromSelflink, getSucceededRemoteData
getResponseFromSelflink
} from '../shared/operators';
import { ResponseCacheEntry } from '../cache/response-cache.reducer';
import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service';
import { HttpClient, HttpEvent, HttpHeaders, HttpRequest } from '@angular/common/http';
import { ErrorResponse, GenericSuccessResponse } from '../cache/response-cache.models';
import { HttpClient } from '@angular/common/http';
import { DSOSuccessResponse, ErrorResponse } from '../cache/response-cache.models';
import { AuthService } from '../auth/auth.service';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationOptions } from '../../shared/notifications/models/notification-options.model';
import { combineLatest } from 'rxjs/observable/combineLatest';
export abstract class DataService<TNormalized extends NormalizedObject, TDomain> {
protected abstract responseCache: ResponseCacheService;
@@ -118,7 +116,7 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain>
return this.rdbService.buildSingle<TNormalized, TDomain>(href);
}
public create(dso: TDomain, parentUUID: string): Observable<RemoteData<TDomain>> {
create(dso: TDomain, parentUUID: string): Observable<RemoteData<TDomain>> {
const requestId = this.requestService.generateRequestId();
const endpoint$ = this.halService.getEndpoint(this.linkPath).pipe(
isNotEmptyOperator(),
@@ -132,7 +130,7 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain>
configureRequest(this.requestService)
);
const payload$ = request$.pipe(
const selfLink$ = request$.pipe(
map((request: RestRequest) => request.href),
getResponseFromSelflink(this.responseCache),
map((response: ResponseCacheEntry) => {
@@ -144,16 +142,12 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain>
}),
filterSuccessfulResponses(),
map((entry: ResponseCacheEntry) => entry.response),
map((response: GenericSuccessResponse<TDomain>) => response.payload),
map((response: DSOSuccessResponse) => {
return response.resourceSelfLinks[0];
}),
distinctUntilChanged()
);
const requestEntry$ = this.requestService.getByUUID(requestId);
const responseCache$ = endpoint$.pipe(getResponseFromSelflink(this.responseCache));
return this.rdbService.toRemoteDataObservable(requestEntry$, responseCache$, payload$).pipe(
getSucceededRemoteData()
);
return this.rdbService.buildSingle(selfLink$) as Observable<RemoteData<TDomain>>;
}
}