aretherecookies-mobile/js/streams/FoodItemsStream.js

21 lines
978 B
JavaScript
Raw Normal View History

2017-03-25 21:05:55 -05:00
//@flow
import FoodItemRecord, { createFoodItem } from '../records/FoodItemRecord';
import { setById } from '../helpers/ImmutableHelpers';
import { Map } from 'immutable';
2017-08-27 14:29:37 -05:00
import location$ from './LocationStream';
2017-11-11 20:15:19 -06:00
import { getFoodItems, type FoodItemsForLocation } from '../apis/FoodItemsApi';
import Filter$ from './FilterStream';
2017-11-11 20:15:19 -06:00
import FilterRecord from '../records/FilterRecord';
import Quantity$ from './QuantityStream';
import type { QuantityFragment } from '../constants/QuantityConstants';
2017-03-25 21:05:55 -05:00
2017-10-22 12:38:05 -05:00
export default location$
.combineLatest(Filter$)
2017-11-11 20:15:19 -06:00
.mergeMap(([loc, filter]: [Position, FilterRecord]) => getFoodItems({ loc, filter }))
2017-10-22 12:38:05 -05:00
.map(({ fooditems = [] }: FoodItemsForLocation) => {
return fooditems.map(createFoodItem).reduce(setById, new Map());
})
.combineLatest(Quantity$, (foodItems: Map<string, FoodItemRecord>, quantities: Map<string, QuantityFragment>) => {
return foodItems.mergeDeepWith((foodItem, quantity) => foodItem.merge(quantity), quantities);
2017-10-22 12:38:05 -05:00
});