X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=server%2Froutes%2Fchallenges.js;h=03fc15003d3599e81145245ee2643e1b89006cfa;hb=bf20f404705c622a7bb7e458dacce37ecb7405a9;hp=84b2c83bd3907203ad8e85773f6a801c2ddf279e;hpb=4edfed6c011cd97d58d5bd8e0451cc0c1006a0a0;p=vchess.git diff --git a/server/routes/challenges.js b/server/routes/challenges.js index 84b2c83b..03fc1500 100644 --- a/server/routes/challenges.js +++ b/server/routes/challenges.js @@ -5,7 +5,7 @@ const access = require("../utils/access"); const ChallengeModel = require("../models/Challenge"); const UserModel = require("../models/User"); //for name check -router.get("/challenges", access.logged, access.ajax, (req,res) => { +router.get("/challenges", (req,res) => { ChallengeModel.getByUser(req.query["uid"], (err,challenges) => { res.json(err || {challenges:challenges}); }); @@ -15,64 +15,37 @@ router.post("/challenges", access.logged, access.ajax, (req,res) => { const error = ChallengeModel.checkChallenge(req.body.chall); if (!!error) return res.json({errmsg:error}); - const challenge = + let challenge = { fen: req.body.chall.fen, timeControl: req.body.chall.timeControl, vid: req.body.chall.vid, uid: req.userId, - nbPlayers: req.body.chall.to.length, + to: req.body.chall.to, //string: user name (may be empty) }; - ChallengeModel.create(challenge, (err,lastId) => { - if (!!err) - return res.json(err); - if (!!req.body.chall.to[0]) - { - UserModel.getByName(req.body.chall.to, (err,users) => { - if (!!err) - return res.json(err); - if (users.length < req.body.chall.to.length) - return res.json({errmsg: "Typo in player(s) name(s)"}); - ChallengeModel.initializeWillPlay( - users.map(u => u.id), - lastId["rowid"], - (err) => { - if (!!err) - return res.json(err); - res.json({cid: lastId["rowid"]}); - } - ); - }); - } - else - res.json({cid: lastId["rowid"]}); - }); -}); - -// Nothing to do if challenge is refused (just removal) -router.put("/challenges", access.logged, access.ajax, (req,res) => { - switch (req.body.action) + const insertChallenge = () => { + ChallengeModel.create(challenge, (err) => { + if (!!err) + return res.json(err); + }); + }; + if (!!req.body.chall.to) { - case "withdraw": - // turn WillPlay to false (TODO?) - break; - case "accept": - // turn WillPlay to true; if then challenge is full, launch game - ChallengeModel.getSeatCount(req.body.id, (scount) => { - if (scount == 1) - launchGame(req.body.id, req.userId); - else - ChallengeModel.setSeat(req.body.id, req.userId); - }) - break; + UserModel.getOne("name", challenge.to, (err,user) => { + if (!!err || !user) + return res.json(err | {errmsg: "Typo in player name"}); + challenge.to = user.id; //ready now to insert challenge + }); + insertChallenge(); } - res.json({}); + else + insertChallenge(); }); function launchGame(cid, uid) { - // TODO: gather challenge infos + WillPlay - // Then create game, and remove challenge + WillPlay + // TODO: gather challenge infos + // Then create game, and remove challenge } //// index