2025-05-28 15:36:51 -07:00

27 lines
971 B
JavaScript

import { ItemAccessors } from '../Item';
import { getItemRuleData } from './accessors';
import { hack__itemCanBeAddedToInventory } from './hacks';
import { validateItemByInfusionRules } from './validators';
/**
*
* @param items
* @param infusion
* @param itemId
* @param itemCanBeAddedLookup
*/
export function filterAvailableItems(items, infusion, itemId = null, itemCanBeAddedLookup = {}) {
if (itemId !== null && !hack__itemCanBeAddedToInventory(infusion, itemId, itemCanBeAddedLookup)) {
return items.filter((item) => itemId === ItemAccessors.getGroupedId(item));
}
const itemRuleData = getItemRuleData(infusion);
if (itemRuleData === null) {
return [];
}
let availableItems = [];
const andRules = itemRuleData.itemRules !== null ? itemRuleData.itemRules : [];
if (andRules.length) {
availableItems = items.filter((item) => validateItemByInfusionRules(item, andRules));
}
return availableItems;
}