Modifs to send current live game
[vchess.git] / client / src / utils / gameStorage.js
index 94c1c30..3bd9934 100644 (file)
@@ -12,7 +12,7 @@
 //   fen: string,
 //   moves: array of Move objects,
 //   clocks: array of integers,
-//   initime: integer (when clock start running),
+//   initime: array of integers (when clock start running),
 //   score: string (several options; '*' == running),
 // }
 
@@ -37,7 +37,8 @@ function dbOperation(callback)
       alert("Error while loading database: " + event.target.errorCode);
     };
     // Create objectStore for vchess->games
-    db.createObjectStore("games", { keyPath: "gameId" });
+    let objectStore = db.createObjectStore("games", { keyPath: "gameId" });
+    objectStore.createIndex("score", "score"); //to search by game result
   }
 }
 
@@ -64,7 +65,7 @@ export const GameStorage =
 
   // TODO: also option to takeback a move ?
   // NOTE: for live games only (all on server for corr)
-  update: function(gameId, obj) //colorIdx, move, fen, addTime, initime, score
+  update: function(gameId, obj) //colorIdx, nextIdx, move, fen, addTime, score
   {
     dbOperation((db) => {
       let objectStore = db.transaction("games", "readwrite").objectStore("games");
@@ -76,9 +77,8 @@ export const GameStorage =
           game.fen = obj.fen;
           if (!!obj.addTime) //NaN if first move in game
             game.clocks[obj.colorIdx] += obj.addTime;
+          game.initime[obj.nextIdx] = Date.now();
         }
-        if (!!obj.initime) //just a flag (true)
-          game.initime = Date.now();
         if (!!obj.score)
           game.score = obj.score;
         objectStore.put(game); //save updated data
@@ -116,6 +116,16 @@ export const GameStorage =
     });
   },
 
+  getCurrent: function(callback)
+  {
+    dbOperation((db) => {
+      let objectStore = db.transaction('games').objectStore('games');
+      objectStore.get("*").onsuccess = function(event) {
+        callback(event.target.result);
+      };
+    });
+  },
+
   // Delete a game in indexedDB
   remove: function(gameId, callback)
   {