From e5035356f119764cde5d6a53bb2d9829c53e20ce Mon Sep 17 00:00:00 2001 From: DuckieTM Date: Mon, 1 Apr 2024 15:32:54 +0200 Subject: [PATCH] Feat: Search selector in inventory : Credits to Jonas! --- .../furniture/InventoryFurnitureView.tsx | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/components/inventory/views/furniture/InventoryFurnitureView.tsx b/src/components/inventory/views/furniture/InventoryFurnitureView.tsx index 1b6dc0f..7daa9f0 100644 --- a/src/components/inventory/views/furniture/InventoryFurnitureView.tsx +++ b/src/components/inventory/views/furniture/InventoryFurnitureView.tsx @@ -16,6 +16,11 @@ interface InventoryFurnitureViewProps roomPreviewer: RoomPreviewer; } +const FILTER_TYPE_EVERYTHING = 'inventory.filter.option.everything'; +const FILTER_TYPE_FLOOR = 'inventory.furni.tab.floor'; +const FILTER_TYPE_WALL = 'inventory.furni.tab.wall'; +const FILTER_TYPE_WIRED = 'inventory.furni.tab.wired'; + const attemptPlaceMarketplaceOffer = (groupItem: GroupItem) => { const item = groupItem.getLastItem(); @@ -43,6 +48,32 @@ export const InventoryFurnitureView: FC = props => const [ filteredGroupItems, setFilteredGroupItems ] = useState([]); const { groupItems = [], selectedItem = null, activate = null, deactivate = null } = useInventoryFurni(); const { resetItems = null } = useInventoryUnseenTracker(); + const [ filterType = string, setFilterType ] = useState(FILTER_TYPE_EVERYTHING); + + useEffect(() => + { + const filteredItems = groupItems.filter(item => + { + const isWallItem = item.isWallItem; + const isFloorItem = !isWallItem; + const isWiredItem = item.name.startsWith('WIRED'); + + switch (filterType) + { + case FILTER_TYPE_WALL: + return isWallItem; + case FILTER_TYPE_FLOOR: + return isFloorItem; + case FILTER_TYPE_WIRED: + return isWiredItem; + case FILTER_TYPE_EVERYTHING: + default: + return true; + } + }); + + setFilteredGroupItems(filteredItems); + }, [ groupItems, filterType ]); useEffect(() => { @@ -125,6 +156,11 @@ export const InventoryFurnitureView: FC = props => + { filteredGroupItems && (filteredGroupItems.length > 0) && filteredGroupItems.map((item, index) => ) }