libs/pfe-connector/src/lib/pfe-resources.service.ts
Methods |
constructor(injector: Injector)
|
||||||
Parameters :
|
handleResources | |||||||||
handleResources(buildingBlock: BuildingBlockInterface, resourcesMap?: BuildingBlockResourceMap)
|
|||||||||
Parameters :
Returns :
Observable<StaticResourceList>
|
import { PfeBusinessService } from '@allianz/ngx-pfe';
import { BuildingBlockInterface, TalyResourcesService } from '@allianz/taly-core';
import { Inject, Injectable, Injector } from '@angular/core';
import { Observable, of } from 'rxjs';
import { takeUntil, tap } from 'rxjs/operators';
import { BuildingBlockResourceMap, StaticResourceList } from './types';
import * as pfeResources from './utils/pfe-resources';
@Injectable()
export class PfeResourcesService implements TalyResourcesService {
private _pfeBusinessService: PfeBusinessService;
constructor(@Inject(Injector) injector: Injector) {
this._pfeBusinessService = injector.get(PfeBusinessService);
}
handleResources(
buildingBlock: BuildingBlockInterface,
resourcesMap?: BuildingBlockResourceMap
): Observable<StaticResourceList> {
if (!resourcesMap) {
// When the resources are not configured, should return an empty value
return of({});
}
// prepare a curried version of the PFE store methods
// to keep the dependency from the actual createResourceUpdateStream
const pfeExpressionObservableQuery = pfeResources.pfeObservableExpressionBuilder(
this._pfeBusinessService
);
const pfeResourceUpdate$ = pfeResources.createResourceUpdateStream(resourcesMap, {
pfeExpressionObservableQuery
});
// kick off the resource update stream
return pfeResourceUpdate$.pipe(
takeUntil(buildingBlock.disconnected$),
tap((resources) => {
buildingBlock.resources = resources;
})
);
}
}