const chatManager = require("../../game/ChatManager"); module.exports = (io, socket) => { socket.on("chat:get_global_history", async () => { const history = await chatManager.getGlobalHistory(); const formattedHistory = history.map((m) => ({ id: m.id, content: m.content, senderName: m.sender?.username || "Unknown", senderId: m.senderId, createdAt: m.createdAt, type: m.type, })); socket.emit("chat:global_history", formattedHistory); }); socket.on("chat:get_global_history", async () => { console.log(`Player ${socket.player?.id} requested chat history`); const history = await chatManager.getGlobalHistory(); const formattedHistory = history.map((m) => ({ id: m.id, content: m.content, senderName: m.sender?.username || "Unknown", senderId: m.senderId, createdAt: m.createdAt, type: m.type, })); socket.emit("chat:global_history", formattedHistory); }); socket.on("chat:send_message", async (payload) => { try { const senderId = socket.user?.id; if (!senderId) return; const messageData = await chatManager.saveMessage({ content: payload.content, type: payload.type || "global", senderId: senderId, receiverId: payload.receiverId, }); if (messageData.type === "global") { io.emit("chat:new_message", messageData); } else { socket .to(`user_${payload.receiverId}`) .emit("chat:new_message", messageData); socket.emit("chat:new_message", messageData); } } catch (err) { console.log(err); socket.emit("error", { message: "CHAT_SEND_ERROR" }); } }); socket.on("player:search", async ({ query }) => { const senderId = socket.player?.id; if (!query || !senderId) return; const results = await chatManager.searchPlayers(query, senderId); socket.emit("player:search_results", results); }); };