Skip to content

Instantly share code, notes, and snippets.

@hieuhani
Created May 24, 2017 10:09
Show Gist options
  • Save hieuhani/fafb62daafa5e4b2ec8382392c26e46d to your computer and use it in GitHub Desktop.
Save hieuhani/fafb62daafa5e4b2ec8382392c26e46d to your computer and use it in GitHub Desktop.
import { createSelector } from 'reselect';
const selectMenusDomain = () => (state) => state.get('menus');
const selectRestaurantMenus = () => createSelector(
selectMenusDomain(),
(menusState) => menusState.get('menus')
);
const selectActiveMenu = () => createSelector(
selectMenusDomain(),
(menusState) => {
const menus = menusState.get('menus');
let selectedMenu = null;
menus.forEach((menu) => {
if (menu.get('selected', false)) {
selectedMenu = menu;
}
if (menu.get('containersLength') > 0) {
menu.get('menuContainers').forEach((subMenu) => {
if (subMenu.get('selected', false)) {
selectedMenu = subMenu;
}
});
}
});
return selectedMenu;
}
);
const selectMenuItems = () => createSelector(
selectActiveMenu(),
(activeMenu) => {
if (activeMenu) {
return activeMenu.get('menuItems', List());
}
return List();
}
);
const selectActiveMenuID = () => createSelector(
selectActiveMenu(),
(activeMenu) => {
if (activeMenu) {
return activeMenu.get('id', -1);
}
return -1;
}
);
const selectActiveMenuItem = () => createSelector(
selectMenuItems(),
(menuItems) => (menuItems.filter((menuItem) => (menuItem.get('selected', false))).first() || new Map())
);
const selectActiveMenuItemOptions = () => createSelector(
selectActiveMenuItem(),
(menuItem) => (menuItem.get('options') || List())
);
const selectActiveMenuItemVarieties = () => createSelector(
selectActiveMenuItem(),
(menuItem) => (menuItem.get('varieties') || List())
);
const selectUpdatingMenu = () => createSelector(
selectMenusDomain(),
(menusState) => menusState.get('updatingMenu')
);
const selectDeletingMenu = () => createSelector(
selectMenusDomain(),
(menusState) => menusState.get('deletingMenu')
);
export {
selectRestaurantMenus,
selectActiveMenu,
selectMenuItems,
selectActiveMenuID,
selectActiveMenuItem,
selectActiveMenuItemOptions,
selectActiveMenuItemVarieties,
selectUpdatingMenu,
selectDeletingMenu,
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment