Fix parseInt() usage, rename Doubleorda --> Ordamirror, implement Clorange variant
[vchess.git] / client / src / utils / timeControl.js
index 9106b96..97d5ab6 100644 (file)
@@ -14,9 +14,9 @@ function timeUnitToSeconds(value, unit) {
   return seconds;
 }
 
+// Used only if increment, hence live game: no "day" unit
 function isLargerUnit(unit1, unit2) {
   return (
-    (unit1 == "d" && unit2 != "d") ||
     (unit1 == "h" && ["s", "m"].includes(unit2)) ||
     (unit1 == "m" && unit2 == "s")
   );
@@ -24,19 +24,21 @@ function isLargerUnit(unit1, unit2) {
 
 export function extractTime(cadence) {
   let tcParts = cadence.replace(/ /g, "").split("+");
-  // Concatenate usual time control suffixes, in case of none is provided
+  // Concatenate usual time control suffix, in case of none is provided
   tcParts[0] += "m";
-  tcParts[1] += "s";
   const mainTimeArray = tcParts[0].match(/^([0-9]+)([smhd]+)$/);
   if (!mainTimeArray) return null;
-  const mainTimeValue = parseInt(mainTimeArray[1]);
+  const mainTimeValue = parseInt(mainTimeArray[1], 10);
   const mainTimeUnit = mainTimeArray[2][0];
   const mainTime = timeUnitToSeconds(mainTimeValue, mainTimeUnit);
   let increment = 0;
   if (tcParts.length >= 2) {
+    // Correspondance games don't use an increment:
+    if (mainTimeUnit == 'd') return null;
+    tcParts[1] += "s";
     const incrementArray = tcParts[1].match(/^([0-9]+)([smhd]+)$/);
     if (!incrementArray) return null;
-    const incrementValue = parseInt(incrementArray[1]);
+    const incrementValue = parseInt(incrementArray[1], 10);
     const incrementUnit = incrementArray[2][0];
     // Increment unit cannot be larger than main unit:
     if (isLargerUnit(incrementUnit, mainTimeUnit)) return null;