UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

42 lines (41 loc) 1.8 kB
import { containsAny, isoToDate } from '../utils'; export const useMenuItemsFilter = (requestedAt, selectedTagsNames, selectedAllergens, view_suspended_item, tagsFilter, allergensFilter) => { const now = new Date(); const requestedDate = requestedAt === null || requestedAt === 'asap' ? now : isoToDate(requestedAt); const filterItems = (items) => { if (!items) return []; return items.filter(item => { var _a, _b; // Filter by tags (included selected tags items) if (selectedTagsNames.length && tagsFilter === 'SHOW_HIDE') { const itemTags = Array.isArray(item.tags) ? item.tags : ((_a = item.tags) === null || _a === void 0 ? void 0 : _a.split(', ')) || []; if (!containsAny(itemTags, selectedTagsNames)) { return false; } } // Filter by allergens (exclude allergic items) if (selectedAllergens.length && allergensFilter === 'SHOW_HIDE') { const itemAllergens = Array.isArray(item.allergens) ? item.allergens : ((_b = item.allergens) === null || _b === void 0 ? void 0 : _b.split(', ')) || []; if (containsAny(itemAllergens, selectedAllergens)) { return false; } } // Filter by suspended until if (item.suspend_until && view_suspended_item === 'HIDE') { const suspendDate = new Date(item.suspend_until * 1000); if (requestedDate < suspendDate) { return false; } } return true; }); }; return { filterItems }; };