Fix 1st move clocks don't move + add message to indicate that corr game started ...
[vchess.git] / client / src / views / Hall.vue
index 2fbb6e6..dadb597 100644 (file)
@@ -1,5 +1,11 @@
 <template lang="pug">
 main
+  input#modalInfo.modal(type="checkbox")
+  div(role="dialog" aria-labelledby="infoMessage")
+    .card.smallpad.small-modal.text-center
+      label.modal-close(for="modalInfo")
+      h3#infoMessage.section
+        p New game started: #[a(href="/game/" + {{ newGameId }})]
   input#modalNewgame.modal(type="checkbox")
   div(role="dialog" aria-labelledby="titleFenedit")
     .card.smallpad
@@ -85,6 +91,7 @@ export default {
       games: [],
       challenges: [],
       people: [], //(all) online players
+      newGameId: 0,
       newchallenge: {
         fen: "",
         vid: 0,
@@ -93,6 +100,20 @@ export default {
       },
     };
   },
+  watch: {
+    // st.variants changes only once, at loading from [] to [...]
+    "st.variants": function(variantArray) {
+      // Set potential challenges and games variant names:
+      this.challenges.forEach(c => {
+        if (c.vname == "")
+          c.vname = this.getVname(c.vid);
+      });
+      this.games.forEach(g => {
+        if (g.vname == "")
+          g.vname = this.getVname(g.vid)
+      });
+    },
+  },
   computed: {
     uniquePlayers: function() {
       // Show e.g. "@nonymous (5)", and do nothing on click on anonymous
@@ -165,23 +186,6 @@ export default {
           );
         }
       );
-      // TODO: I don't like this code below; improvement?
-      let retryForVnames = setInterval(() => {
-        if (this.st.variants.length > 0) //variants array is loaded
-        {
-          if (this.games.length > 0 && this.games[0].vname == "")
-          {
-            // Fix games' vnames:
-            this.games.forEach(g => { g.vname = this.getVname(g.vid); });
-          }
-          if (this.challenges.length > 0 && this.challenges[0].vname == "")
-          {
-            // Fix challenges' vnames:
-            this.challenges.forEach(c => { c.vname = this.getVname(c.vid); });
-          }
-          clearInterval(retryForVnames);
-        }
-      }, 50);
     }
     // 0.1] Ask server for room composition:
     const funcPollClients = () => {
@@ -379,7 +383,10 @@ export default {
             this.startNewGame(data.gameInfo);
           else
           {
-            // TODO: notify with game link but do not redirect
+            this.newGameId = data.gameInfo.gameId;
+            let modalBox = document.getElementById("modalInfo");
+            modalBox.checked = true;
+            setTimeout(() => { modalBox.checked = false; }, 2500);
           }
           break;
         }
@@ -564,6 +571,7 @@ export default {
       const game = Object.assign({}, gameInfo, {
         // (other) Game infos: constant
         fenStart: gameInfo.fen,
+        created: Date.now(),
         // Game state (including FEN): will be updated
         moves: [],
         clocks: [-1, -1], //-1 = unstarted