diff --git a/backend/src/socket/poll.socket.js b/backend/src/socket/poll.socket.js index 3c4e263..d729b77 100644 --- a/backend/src/socket/poll.socket.js +++ b/backend/src/socket/poll.socket.js @@ -4,31 +4,43 @@ export const handlePollSocket = (io) => { io.on("connection", (socket) => { console.log(`User connected: ${socket.id}`); - socket.on("joinPoll", (pollId) => { + // Handle user joining a poll room + const handleJoinPoll = (pollId) => { + if (!pollId) { + socket.emit("error", { message: "Poll ID is required to join a poll room" }); + return; + } + socket.join(pollId); console.log(`User ${socket.id} joined poll room: ${pollId}`); - }); + }; - socket.on("disconnect", () => { - console.log(`User disconnected: ${socket.id}`); - }); - - socket.on("vote", async (data) => { - if (data.success) { - console.log("Vote received:", data); - - try { - const pollData = await getPollDataService(data.pollId); - - io.to(data.pollId).emit("pollDataUpdated", { data: pollData }); - } catch (error) { - console.error("Error fetching poll data:", error); - socket.emit("error", { message: "Failed to fetch poll data" }); - } - } else { - console.log("Vote failed:", data); - socket.emit("error", { message: "Vote was unsuccessful" }); + // Handle user voting in a poll + const handleVote = async (data) => { + if (!data.pollId || !data.success) { + socket.emit("error", { message: "Invalid vote data" }); + return; } - }); + + console.log("Vote received:", data); + + try { + const pollData = await getPollDataService(data.pollId); + io.to(data.pollId).emit("pollDataUpdated", { data: pollData }); + } catch (error) { + console.error("Error fetching poll data:", error); + socket.emit("error", { message: "Failed to fetch poll data" }); + } + }; + + // Handle user disconnection + const handleDisconnect = () => { + console.log(`User disconnected: ${socket.id}`); + }; + + // Event listeners + socket.on("joinPoll", handleJoinPoll); + socket.on("vote", handleVote); + socket.on("disconnect", handleDisconnect); }); };