File tree Expand file tree Collapse file tree
src/app/item-page/simple/item-types/shared Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import { InjectionToken } from '@angular/core';
22import {
33 combineLatest as observableCombineLatest ,
44 Observable ,
5+ of as observableOf ,
56 zip as observableZip ,
67} from 'rxjs' ;
78import {
@@ -53,17 +54,19 @@ export const compareArraysUsingIds = <T extends { id: string }>() =>
5354/**
5455 * Operator for turning a list of relationships into a list of the relevant items
5556 * @param {string } thisId The item's id of which the relations belong to
56- * @returns {(source: Observable<Relationship[]>) => Observable<Item[]> }
5757 */
58- export const relationsToItems = ( thisId : string ) =>
58+ export const relationsToItems = ( thisId : string ) : ( source : Observable < Relationship [ ] > ) => Observable < Item [ ] > =>
5959 ( source : Observable < Relationship [ ] > ) : Observable < Item [ ] > =>
6060 source . pipe (
61- mergeMap ( ( rels : Relationship [ ] ) =>
62- observableZip (
63- ...rels . map ( ( rel : Relationship ) => observableCombineLatest ( rel . leftItem , rel . rightItem ) ) ,
64- ) ,
65- ) ,
66- map ( ( arr ) =>
61+ mergeMap ( ( relationships : Relationship [ ] ) => {
62+ if ( relationships . length === 0 ) {
63+ return observableOf ( [ ] ) ;
64+ }
65+ return observableZip (
66+ ...relationships . map ( ( rel : Relationship ) => observableCombineLatest ( [ rel . leftItem , rel . rightItem ] ) ) ,
67+ ) ;
68+ } ) ,
69+ map ( ( arr : [ RemoteData < Item > , RemoteData < Item > ] [ ] ) =>
6770 arr
6871 . filter ( ( [ leftItem , rightItem ] ) => leftItem . hasSucceeded && rightItem . hasSucceeded )
6972 . map ( ( [ leftItem , rightItem ] ) => {
You can’t perform that action at this time.
0 commit comments