diff --git a/web/client/src/store/inventoryStore.js b/web/client/src/store/inventoryStore.js index 9c02a93..d88569e 100644 --- a/web/client/src/store/inventoryStore.js +++ b/web/client/src/store/inventoryStore.js @@ -27,6 +27,7 @@ function _applyStateData(data, current) { craftable: data.craftable || current.craftable, craftTurtleOk: data.craftTurtleOk !== undefined ? data.craftTurtleOk : current.craftTurtleOk, bridgeConnected: data.bridgeConnected !== undefined ? data.bridgeConnected : current.bridgeConnected, + dropperNicknames: data.dropperNicknames || current.dropperNicknames, lastUpdate: data.lastUpdate || Date.now(), }; } @@ -55,6 +56,7 @@ export const useInventoryStore = create((set, get) => ({ craftable: [], craftTurtleOk: false, bridgeConnected: false, + dropperNicknames: {}, connected: false, ws: null, lastUpdate: 0, @@ -268,6 +270,36 @@ export const useInventoryStore = create((set, get) => ({ } }, + // Dropper nicknames + setDropperNickname: async (dropperName, nickname) => { + try { + const response = await fetch(`${API_URL}/dropper-nicknames`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ dropperName, nickname }), + }); + const result = await response.json(); + if (result.nicknames) { + set({ dropperNicknames: result.nicknames }); + } + return result; + } catch (error) { + console.error('❌ Error setting dropper nickname:', error); + return { success: false, error: error.message }; + } + }, + + fetchDropperNicknames: async () => { + try { + const response = await fetch(`${API_URL}/dropper-nicknames`); + if (!response.ok) return; + const data = await response.json(); + set({ dropperNicknames: data.nicknames || {} }); + } catch (error) { + console.error('❌ Error fetching dropper nicknames:', error); + } + }, + // Analytics - fetch aggregate storage history fetchHistorySummary: async () => { try {