UNPKG

@open-tender/utils

Version:

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

46 lines (45 loc) 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useMenuItemsFilter = void 0; const utils_1 = require("../utils"); const useMenuItemsFilter = (requestedAt, selectedTagsNames, selectedAllergens, view_suspended_item, tagsFilter, allergensFilter) => { const now = new Date(); const requestedDate = requestedAt === null || requestedAt === 'asap' ? now : (0, utils_1.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 (!(0, utils_1.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 ((0, utils_1.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 }; }; exports.useMenuItemsFilter = useMenuItemsFilter;