@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
JavaScript
;
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;