Add dropper nickname management: implement get and set endpoints
This commit is contained in:
@@ -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; });
|
||||
|
||||
Reference in New Issue
Block a user