Draft of problems section
[vchess.git] / client / src / views / Game.vue
index b7cc1fc..88f2b5e 100644 (file)
@@ -134,7 +134,11 @@ export default {
       if (!!this.conn && this.conn.readyState == 1) //1 == OPEN state
         callback();
       else //socket not ready yet (initial loading)
-        this.conn.onopen = callback;
+      {
+        // NOTE: it's important to call callback without arguments,
+        // otherwise first arg is Websocket object and loadGame fails.
+        this.conn.onopen = () => { return callback() };
+      }
     };
     if (!this.gameRef.rid) //game stored locally or on server
       this.loadGame(null, () => socketInit(this.roomInit));
@@ -540,7 +544,8 @@ export default {
         });
         if (this.repeat[repIdx] >= 3)
           this.drawOffer = "threerep";
-        callback();
+        if (!!callback)
+          callback();
       };
       if (!!game)
         return afterRetrieval(game);
@@ -555,8 +560,13 @@ export default {
         GameStorage.get(this.gameRef.id, afterRetrieval);
       }
     },
-    // Post-process a move (which was just played)
+    // Post-process a move (which was just played in BaseGame)
     processMove: function(move) {
+      if (this.game.type == "corr" && move.color == this.game.mycolor)
+      {
+        if (!confirm(this.st.tr["Are you sure?"]))
+          return this.$set(this.game, "moveToUndo", move);
+      }
       // Update storage (corr or live) if I play in the game
       const colorIdx = ["w","b"].indexOf(move.color);
       const nextIdx = ["w","b"].indexOf(this.vr.turn);
@@ -681,6 +691,8 @@ export default {
       {
         GameStorage.update(this.gameRef.id,
           {score: score, scoreMsg: scoreMsg});
+        // Notify the score to main Hall. TODO: only one player (currently double send)
+        this.send("result", {gid:this.game.id, score:score});
       }
     },
   },