X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fdata%2FchallengeCheck.js;h=e0aa978cda51ba36f589eb2d53da883fa2cb96b6;hp=85d8571d1bee65d6e71b9df28c18d392405ad643;hb=dd75774d31a140cabf80790bdade9a40048c38d5;hpb=8d61fc4ab7373b4a576f3f9108cdf7768ae27096 diff --git a/client/src/data/challengeCheck.js b/client/src/data/challengeCheck.js index 85d8571d..e0aa978c 100644 --- a/client/src/data/challengeCheck.js +++ b/client/src/data/challengeCheck.js @@ -1,24 +1,25 @@ -// 'vname' for 'variant name' is defined when run on client side -function checkChallenge(c, vname) +import { extractTime } from "@/utils/timeControl"; + +export function checkChallenge(c) { const vid = parseInt(c.vid); if (isNaN(vid) || vid <= 0) return "Please select a variant"; - const mainTime = parseInt(c.mainTime); - const increment = parseInt(c.increment); - if (isNaN(mainTime) || mainTime <= 0) - return "Main time should be strictly positive"; - if (isNaN(increment) || increment < 0) - return "Increment must be positive"; + const tc = extractTime(c.timeControl); + if (!tc) + return "Wrong time control"; + // Less than 3 days ==> live game (TODO: heuristic... 40 moves also) + c.liveGame = (tc.mainTime + 40 * tc.increment < 3*24*60*60); // Basic alphanumeric check for players names let playerCount = 0; - for (p of c.players) + for (const pname of c.to) { - if (p.name.length > 0) + if (pname.length > 0) { - if (!p.name.match(/^[\w]+$/)) + // TODO: slightly redundant (see data/userCheck.js) + if (!pname.match(/^[\w]+$/)) return "Wrong characters in players names"; playerCount++; } @@ -27,27 +28,12 @@ function checkChallenge(c, vname) if (playerCount > 0 && playerCount != c.nbPlayers-1) return "None, or all of the opponent names must be filled" - if (typeof document !== "undefined") //client side - { - const V = eval(vname + "Rules"); - // Allow custom FEN (and check it) only for individual challenges - if (c.fen.length > 0 && playerCount > 0) - { - if (!V.IsGoodFen(c.fen)) - return "Bad FEN string"; - } - else - { - // Generate a FEN - c.fen = V.GenRandInitFen(); - } - } - else - { - // Just characters check on server: - if (!c.fen.match(/^[a-zA-Z0-9, /-]*$/)) - return "Bad FEN string"; - } + // Allow custom FEN (and check it) only for individual challenges + if (c.fen.length > 0 && playerCount > 0) + { + if (!V.IsGoodFen(c.fen)) + return "Bad FEN string"; + } + else + c.fen = ""; } - -try { module.exports = checkChallenge; } catch(e) { } //for server