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 {
loadFullState, saveFullState, recordItemHistory,
saveItems, saveFurnaces, saveAlerts, saveState,
saveItems, saveFurnaces, saveAlerts, saveState, loadState,
getHistory, getHistorySummary, closeDb, flushPendingSave,
} from './db.js';
@@ -38,6 +38,7 @@ let smeltableRecipes = persisted.smeltableRecipes;
let craftableRecipes = persisted.craftableRecipes;
let craftTurtleOk = persisted.craftTurtleOk;
let lastUpdate = persisted.lastUpdate;
let dropperNicknames = loadState('dropperNicknames', {});
if (lastUpdate > 0) {
const ago = Math.round((Date.now() - lastUpdate) / 1000);
@@ -210,6 +211,7 @@ app.get('/api/inventory', (req, res) => {
craftTurtleOk,
lastUpdate,
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
app.post('/api/scan', (req, res) => {
try {
@@ -630,6 +659,7 @@ wss.on('connection', (ws, req) => {
craftTurtleOk,
lastUpdate,
bridgeConnected: bridgeClients.size > 0,
dropperNicknames,
}));
ws.on('pong', () => { ws.isAlive = true; });