mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-18 15:33:04 +00:00
refactoring
This commit is contained in:
@@ -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>>;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user