diff --git a/projects/common/src/fm/services/package.service.ts b/projects/common/src/fm/services/package.service.ts index 9967f3c..7f8cb50 100644 --- a/projects/common/src/fm/services/package.service.ts +++ b/projects/common/src/fm/services/package.service.ts @@ -7,7 +7,8 @@ import {IItem} from '../models/item'; import {IItemTask} from '../models/itemTask'; import {HttpClient} from '@angular/common/http'; import {AppConfig} from '../shared/app.config'; -import {Observable} from 'rxjs'; +import {Observable,iif,of} from 'rxjs'; +import {switchMap} from 'rxjs/operators'; @Injectable({ providedIn: 'root', @@ -16,12 +17,13 @@ import {Observable} from 'rxjs'; export class PackageService { private userPackages: { [key: string]: IPackage } = {}; private packages: { [key: string]: IPackage } = {}; + private packagesObservable = this.store$.select(appCommonReducer.SelectGetPackages); constructor(private store$: Store, public httpClient: HttpClient, public appConfig: AppConfig) { store$.select(appCommonReducer.SelectGetValidUserPackages).subscribe((packages) => { this.userPackages = packages; }); - store$.select(appCommonReducer.SelectGetPackages).subscribe((packages) => { + this.packagesObservable.subscribe((packages) => { this.packages = packages; }); } @@ -41,6 +43,14 @@ export class PackageService { postItemPackageTask(item: IItem, task: IItemTask): Observable { return this.httpClient.post(`${this.ApiEndpoint()}/api/v1/items/${item.code}/packagetasks`, task); } + + ifPackageListExists(packageList: Array, ifTrue:Observable,ifFalse:Observable):Observable { + return this.packagesObservable.pipe(switchMap(packages => + iif(( )=> Object.keys(packages).some(id => packageList.includes(id)), + ifTrue, + ifFalse) + )); + } } export function getValidPackages(packageMap: IPackages): {[key: string]: IPackage} {