Add dropper nickname management: implement get and set endpoints

This commit is contained in:
MayaTheShy
2026-03-21 20:55:01 -04:00
parent 12c17d3bfd
commit bee1019fd6

View File

@@ -7,7 +7,7 @@ import path from 'path';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
import { import {
loadFullState, saveFullState, recordItemHistory, loadFullState, saveFullState, recordItemHistory,
saveItems, saveFurnaces, saveAlerts, saveState, saveItems, saveFurnaces, saveAlerts, saveState, loadState,
getHistory, getHistorySummary, closeDb, flushPendingSave, getHistory, getHistorySummary, closeDb, flushPendingSave,
} from './db.js'; } from './db.js';
@@ -38,6 +38,7 @@ let smeltableRecipes = persisted.smeltableRecipes;
let craftableRecipes = persisted.craftableRecipes; let craftableRecipes = persisted.craftableRecipes;
let craftTurtleOk = persisted.craftTurtleOk; let craftTurtleOk = persisted.craftTurtleOk;
let lastUpdate = persisted.lastUpdate; let lastUpdate = persisted.lastUpdate;
let dropperNicknames = loadState('dropperNicknames', {});
if (lastUpdate > 0) { if (lastUpdate > 0) {
const ago = Math.round((Date.now() - lastUpdate) / 1000); const ago = Math.round((Date.now() - lastUpdate) / 1000);
@@ -210,6 +211,7 @@ app.get('/api/inventory', (req, res) => {
craftTurtleOk, craftTurtleOk,
lastUpdate, lastUpdate,
bridgeConnected: bridgeClients.size > 0, bridgeConnected: bridgeClients.size > 0,
dropperNicknames,
}); });
}); });
@@ -281,6 +283,33 @@ app.post('/api/order', (req, res) => {
} }
}); });
// ========== Dropper Nicknames ==========
// Get all dropper nicknames
app.get('/api/dropper-nicknames', (req, res) => {
res.json({ nicknames: dropperNicknames });
});
// Set a single dropper nickname
app.post('/api/dropper-nicknames', (req, res) => {
try {
const { dropperName, nickname } = req.body;
if (!dropperName) return res.status(400).json({ error: 'Missing dropperName' });
if (nickname && nickname.trim()) {
dropperNicknames[dropperName] = nickname.trim();
} else {
delete dropperNicknames[dropperName];
}
saveState('dropperNicknames', dropperNicknames);
console.log(`🏷️ Dropper nickname: ${dropperName}${nickname || '(removed)'}`);
res.json({ success: true, nicknames: dropperNicknames });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Request inventory scan // Request inventory scan
app.post('/api/scan', (req, res) => { app.post('/api/scan', (req, res) => {
try { try {
@@ -630,6 +659,7 @@ wss.on('connection', (ws, req) => {
craftTurtleOk, craftTurtleOk,
lastUpdate, lastUpdate,
bridgeConnected: bridgeClients.size > 0, bridgeConnected: bridgeClients.size > 0,
dropperNicknames,
})); }));
ws.on('pong', () => { ws.isAlive = true; }); ws.on('pong', () => { ws.isAlive = true; });