fix
All checks were successful
build-and-deploy / build (push) Successful in 1m11s
build-and-deploy / deploy (push) Successful in 11s

This commit is contained in:
2025-08-28 20:08:26 -06:00
parent 8a937e5e24
commit 04b53a755c

View File

@@ -1028,4 +1028,67 @@ adminRouter.post("/admin/namemanager/import", async (req: Request, res: Response
} }
}); });
// In-memory storage for community messages
interface Message {
id: string;
content: string;
timestamp: number;
}
let communityMessages: Message[] = [];
// GET /api/messages - Get all messages
adminRouter.get("/messages", async (req: Request, res: Response) => {
try {
res.json({ messages: communityMessages });
} catch (error) {
console.error('[AdminAPI] Error fetching messages:', error);
res.status(500).json({ error: 'Failed to fetch messages' });
}
});
// POST /api/messages - Add a new message
adminRouter.post("/messages", async (req: Request, res: Response) => {
try {
const { content } = req.body;
if (!content || typeof content !== 'string') {
return res.status(400).json({ error: 'Content is required and must be a string' });
}
const trimmedContent = content.trim();
if (trimmedContent.length === 0) {
return res.status(400).json({ error: 'Content cannot be empty' });
}
if (trimmedContent.length > 500) {
return res.status(400).json({ error: 'Content cannot exceed 500 characters' });
}
const message: Message = {
id: `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`,
content: trimmedContent,
timestamp: Date.now()
};
communityMessages.push(message);
// Keep only the last 1000 messages to prevent memory issues
if (communityMessages.length > 1000) {
communityMessages = communityMessages.slice(-1000);
}
console.log(`[AdminAPI] New message added: ${message.id.slice(0, 12)}... (${trimmedContent.length} chars)`);
res.json({
success: true,
message: 'Message added successfully',
id: message.id
});
} catch (error) {
console.error('[AdminAPI] Error adding message:', error);
res.status(500).json({ error: 'Failed to add message' });
}
});
export { adminRouter, broadcastDashboardUpdate }; export { adminRouter, broadcastDashboardUpdate };