64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
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);
|
|
});
|
|
};
|