diff --git a/js/streams/FoodItemsStream.js b/js/streams/FoodItemsStream.js index faeec80..d335a8a 100644 --- a/js/streams/FoodItemsStream.js +++ b/js/streams/FoodItemsStream.js @@ -1,15 +1,15 @@ //@flow -import { ReplaySubject, Observable } from "rxjs"; -import FoodItemRecord, { createFoodItem } from "../records/FoodItemRecord"; -import { setById } from "../helpers/ImmutableHelpers"; -import { Map } from "immutable"; -import location$ from "./LocationStream"; -import { getFoodItems, type FoodItemsForLocation } from "../apis/FoodItemsApi"; -import Filter$ from "./FilterStream"; -import Quantity$ from "./QuantityStream"; -import type { QuantityFragment } from "../constants/QuantityConstants"; -import { type ImageFragment } from "../records/ImageRecord"; -import Image$ from "./ImagesStream"; +import { ReplaySubject, Observable } from 'rxjs'; +import FoodItemRecord, { createFoodItem, type FoodItem } from '../records/FoodItemRecord'; +import { setById } from '../helpers/ImmutableHelpers'; +import { Map, type Record } from 'immutable'; +import location$ from './LocationStream'; +import { getFoodItems, type FoodItemsForLocation } from '../apis/FoodItemsApi'; +import Filter$ from './FilterStream'; +import Quantity$ from './QuantityStream'; +import type { QuantityFragment } from '../constants/QuantityConstants'; +import { type ImageFragment } from '../records/ImageRecord'; +import Image$ from './ImagesStream'; const foodItemSubject: ReplaySubject = new ReplaySubject(); @@ -49,26 +49,20 @@ export default fetchedFoodItems$ }) .combineLatest( Quantity$, - (foodItems: ?Map, quantitiesFromStream: Map) => { + ( + foodItems: ?Map>, + quantitiesFromStream: Map + ) => { if (foodItems) { - return foodItems.mergeDeepWith( - (foodItem, foodItemQuantities) => foodItem.merge(foodItemQuantities), - quantitiesFromStream - ); + return foodItems.mergeDeep(quantitiesFromStream); } } ) .combineLatest( Image$, - (foodItems: ?Map, latestFromImages$: Map) => { - if (foodItems) { - return foodItems.mergeDeepWith( - // $FlowFixMe - (foodItem: FoodItemRecord, imageFragment: ImageFragment) => { - return foodItem.set("images", imageFragment.images); - }, - latestFromImages$ - ); - } + (foodItems: ?Map>, latestFromImages$: Map) => { + return latestFromImages$.reduce((foodItemMap, { id, images }) => { + return foodItemMap.setIn([id, 'images'], images); + }, foodItems || Map()); } );