aretherecookies-mobile/js/streams/FoodItemsStream.js
Bart Akeley 8da242a11c require login for quantity updates and item creation
requires corresponding backend updates
2018-01-27 16:56:01 -06:00

23 lines
987 B
JavaScript

//@flow
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 FilterRecord from '../records/FilterRecord';
import Quantity$ from './QuantityStream';
import type { QuantityFragment } from '../constants/QuantityConstants';
export default location$
.combineLatest(Filter$)
.mergeMap(([loc, filter]: [Position, FilterRecord]) => getFoodItems({ loc, filter }))
.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);
}
);