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 { 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; });
|
||||||
|
|||||||
Reference in New Issue
Block a user