const router = require("express").Router(); const uuid = require("uuid"); const { createRoom } = require("../socket"); const { checkAuth } = require("../util/auth"); const { Challenge } = require("../models/challenge"); // async function fetchChallenge({ challenger, challenged }) {} // rooms can only be created through HTTP requests and destroyed only by socket.io server // and vice versa is not true router.post("/", checkAuth, async (req, res, next) => { console.log(req.body); // challenger and challenged are username, color is the color played by challenger, timeLimit is the timeLimit for one player const { challenger, challenged, color, timeLimit } = req.body; let challenge = await Challenge.findOne({ challenger }); // a user can create only one challenge at a time if (challenge) { return res.status(405).json({ message: "Cannot create new challenge", description: "User already created a challenge", }); } // get email of the challenged person // const challengedEmail = (await User.findOne({ username: challenged })).email; // console.log(challengedEmail); const roomID = uuid.v4(); createRoom(roomID, timeLimit); challenge = await Challenge.create({ challenger, challenged, color, timeLimit, roomID }); // if (pendingChallenges.has(challenged)) { // let challenges = pendingChallenges.get(challenged); // challenges.push({ challenger, roomID, color, timeLimit }); // } else { // // color is the choosed by the challenger // pendingChallenges.set(challenged, [{ challenger, roomID, color, timeLimit }]); // } console.log("Pending challenge:", challenge); // STOP SENDING EMAILS FOR NOW // sendEmail( // challengedEmail, // `Challenge from ${challenger}`, // `To accept the challenge follow the link: http://192.168.136.99:5173/game/challenges/${challenged}/${roomID} \n login through: http://192.168.136.99:5173/login \n roomid:${roomID}` // ); console.log(roomID); res.status(201).json({ roomID }); }); module.exports = router;