Fix vote bug

This commit is contained in:
2025-03-01 17:17:00 +01:00
parent 9901c1a49e
commit 2ea81493ba
3 changed files with 55 additions and 13 deletions

View File

@@ -163,19 +163,20 @@ module.exports.voteForPlaylist = (roomId, userId, playlistId) => {
const room = rooms[roomId];
if (room.state !== 'waiting') return false;
const previousVote = Object.entries(room.playlistVotes)
.find(([_, voters]) => voters.includes(userId));
if (previousVote) {
room.playlistVotes[previousVote[0]] =
room.playlistVotes[previousVote[0]].filter(id => id !== userId);
if (!room.playlistVotes) {
room.playlistVotes = {};
}
Object.entries(room.playlistVotes).forEach(([pid, voters]) => {
room.playlistVotes[pid] = voters.filter(id => id !== userId);
});
if (!room.playlistVotes[playlistId]) {
room.playlistVotes[playlistId] = [];
}
room.playlistVotes[playlistId].push(userId);
console.log(`Updated votes for room ${roomId}:`, room.playlistVotes);
return true;
};

View File

@@ -117,7 +117,7 @@ module.exports = (io) => (socket) => {
}
});
socket.on("join-room", ({roomId, name}) => {
socket.on("join-room", async ({roomId, name}) => {
if (currentRoomId) return socket.emit("already-in-room", currentRoomId);
roomId = roomId.toString().toUpperCase();
@@ -128,14 +128,35 @@ module.exports = (io) => (socket) => {
}
currentUser = {id: socket.id, name: name.toString()};
roomController.connectUserToRoom(roomId, currentUser);
await roomController.connectUserToRoom(roomId, currentUser);
socket.join(roomId);
const users = roomController.getRoomUsers(roomId);
io.to(roomId).emit("room-users-update", users);
socket.to(roomId).emit("user-connected", currentUser);
const votes = roomController.getPlaylistVotes(roomId);
const availablePlaylists = roomController.getAvailablePlaylists(roomId);
socket.emit("room-joined", roomId);
socket.emit("room-users", users);
socket.emit("playlist-votes-updated", votes);
try {
const details = await youtubeService.getPlaylistDetails(availablePlaylists);
Object.keys(details).forEach(genre => {
const playlistId = details[genre].id;
details[genre].votes = votes[playlistId]?.length || 0;
});
socket.emit("playlist-options", details);
} catch (error) {
console.error("Error sending playlist details to new user:", error);
socket.emit("error", {
message: "Failed to load playlists",
details: error.message
});
}
socket.to(roomId).emit("user-connected", currentUser);
io.to(roomId).emit("room-users-update", users);
currentRoomId = roomId;
} else {
socket.emit("room-not-found", roomId);