mirror of
https://gitlab.com/wheres-the-tp/ui-mobile.git
synced 2026-01-25 07:24:56 -06:00
59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
// @flow
|
|
import withProps from 'recompose/withProps';
|
|
import compose from 'recompose/compose';
|
|
import { path } from 'ramda';
|
|
import mapPropsStream from 'recompose/mapPropsStream';
|
|
import FoodItems$ from '../streams/FoodItemsStream';
|
|
import typeof FoodItemRecord from '../records/FoodItemRecord';
|
|
import { Map } from 'immutable';
|
|
|
|
export const withFoodItems = mapPropsStream(props$ =>
|
|
props$.combineLatest(FoodItems$, (props, foodItems) => {
|
|
return {
|
|
...props,
|
|
foodItemsMap: foodItems && foodItems,
|
|
};
|
|
})
|
|
);
|
|
|
|
export const withFoodItemsAsSeq = mapPropsStream(props$ =>
|
|
props$.combineLatest(FoodItems$, (props, foodItems) => {
|
|
return {
|
|
...props,
|
|
foodItemsSeq: foodItems && foodItems.valueSeq(),
|
|
};
|
|
})
|
|
);
|
|
|
|
export const withFoodItemIdFromRoute = withProps((props: { match: { params: { id: string } } }) => {
|
|
const id: string = path(['match', 'params', 'id'], props) || '';
|
|
return { foodItemId: id };
|
|
});
|
|
|
|
export const withFoodItem = compose(
|
|
withFoodItems,
|
|
withFoodItemIdFromRoute,
|
|
withProps((props: { foodItemsMap: ?Map<number, FoodItemRecord>, foodItemId: number }) => {
|
|
const { foodItemsMap, foodItemId } = props;
|
|
return { foodItem: foodItemsMap && foodItemsMap.get(foodItemId) };
|
|
})
|
|
);
|
|
|
|
export const withFoodItemPlaceId = withProps((props: { foodItem: FoodItemRecord }) => {
|
|
const { foodItem } = props;
|
|
return {
|
|
placeId: foodItem.placeId,
|
|
};
|
|
});
|
|
|
|
export const withFoodItemsGroupedByPlace = compose(
|
|
withFoodItems,
|
|
withProps((props: { foodItemsMap: ?Map<number, FoodItemRecord> }) => {
|
|
if (!props.foodItemsMap) {
|
|
return {};
|
|
}
|
|
return {
|
|
foodItemsByPlace: props.foodItemsMap.groupBy(foodItem => foodItem.placeId),
|
|
};
|
|
})
|
|
);
|