Refactor selected item handling: update state management to derive selected item from name and ensure real-time inventory count
This commit is contained in:
@@ -11,12 +11,19 @@ function InventoryGrid() {
|
|||||||
const getFilteredItems = useInventoryStore((state) => state.getFilteredItems);
|
const getFilteredItems = useInventoryStore((state) => state.getFilteredItems);
|
||||||
const orderItem = useInventoryStore((state) => state.orderItem);
|
const orderItem = useInventoryStore((state) => state.orderItem);
|
||||||
|
|
||||||
const [selectedItem, setSelectedItem] = useState(null);
|
const [selectedItemName, setSelectedItemName] = useState(null);
|
||||||
const [orderAmount, setOrderAmount] = useState(1);
|
const [orderAmount, setOrderAmount] = useState(1);
|
||||||
const [sortBy, setSortBy] = useState('count');
|
const [sortBy, setSortBy] = useState('count');
|
||||||
const [activeCategory, setActiveCategory] = useState('all');
|
const [activeCategory, setActiveCategory] = useState('all');
|
||||||
const [selectedDropper, setSelectedDropper] = useState('');
|
const [selectedDropper, setSelectedDropper] = useState('');
|
||||||
|
|
||||||
|
// Derive selectedItem from live inventory so count always reflects real-time data
|
||||||
|
const selectedItem = useMemo(() => {
|
||||||
|
if (!selectedItemName) return null;
|
||||||
|
const items = inventory.itemList || [];
|
||||||
|
return items.find((i) => i.name === selectedItemName) || null;
|
||||||
|
}, [selectedItemName, inventory.itemList]);
|
||||||
|
|
||||||
const droppers = inventory.droppers || [];
|
const droppers = inventory.droppers || [];
|
||||||
|
|
||||||
const items = getFilteredItems();
|
const items = getFilteredItems();
|
||||||
@@ -40,7 +47,7 @@ function InventoryGrid() {
|
|||||||
}, [selectedItem, orderAmount, orderItem, selectedDropper]);
|
}, [selectedItem, orderAmount, orderItem, selectedDropper]);
|
||||||
|
|
||||||
const handleItemClick = (item) => {
|
const handleItemClick = (item) => {
|
||||||
setSelectedItem(item);
|
setSelectedItemName(item.name);
|
||||||
setOrderAmount(1);
|
setOrderAmount(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -146,7 +153,7 @@ function InventoryGrid() {
|
|||||||
<h3>{formatItemName(selectedItem.name || '')}</h3>
|
<h3>{formatItemName(selectedItem.name || '')}</h3>
|
||||||
<span className="detail-id">{selectedItem.name || ''}</span>
|
<span className="detail-id">{selectedItem.name || ''}</span>
|
||||||
</div>
|
</div>
|
||||||
<button className="detail-close" onClick={() => setSelectedItem(null)}>✕</button>
|
<button className="detail-close" onClick={() => setSelectedItemName(null)}>✕</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="detail-stats">
|
<div className="detail-stats">
|
||||||
|
|||||||
Reference in New Issue
Block a user