TreasureTrails/backend/dist/socket/index.js

62 lines
2.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = setupSocket;
const index_1 = require("../index");
function setupSocket(io) {
io.on('connection', (socket) => {
console.log('Client connected:', socket.id);
socket.on('join-game', async (gameId) => {
socket.join(`game:${gameId}`);
console.log(`Socket ${socket.id} joined game:${gameId}`);
});
socket.on('leave-game', (gameId) => {
socket.leave(`game:${gameId}`);
});
socket.on('team-location', async (data) => {
await index_1.prisma.team.update({
where: { id: data.teamId },
data: { lat: data.lat, lng: data.lng }
});
io.to(`game:${data.gameId}`).emit('team-location', {
teamId: data.teamId,
lat: data.lat,
lng: data.lng
});
});
socket.on('chat-message', async (data) => {
const chatMessage = await index_1.prisma.chatMessage.create({
data: {
gameId: data.gameId,
teamId: data.teamId || null,
userId: data.userId,
message: data.message,
isDirect: data.isDirect || false
}
});
const messageData = {
id: chatMessage.id,
teamId: data.teamId,
isDirect: chatMessage.isDirect,
userId: data.userId,
userName: data.userName,
message: data.message,
sentAt: chatMessage.sentAt
};
if (data.isDirect && data.teamId) {
io.to(`game:${data.gameId}`).emit('chat-message', messageData);
}
else {
io.to(`game:${data.gameId}`).emit('chat-message', messageData);
}
});
socket.on('team-advanced', async (data) => {
io.to(`game:${data.gameId}`).emit('team-advanced', {
teamId: data.teamId
});
});
socket.on('disconnect', () => {
console.log('Client disconnected:', socket.id);
});
});
return io;
}