Update TODO + cosmetics
[vchess.git] / client / src / utils / compgameStorage.js
index a5c58af..c846304 100644 (file)
@@ -15,7 +15,8 @@ function dbOperation(callback) {
   let DBOpenRequest = window.indexedDB.open("vchess_comp", 4);
 
   DBOpenRequest.onerror = function(event) {
-    alert(store.state.tr["Database error: stop private browsing, or update your browser"]);
+    alert(store.state.tr[
+      "Database error: stop private browsing, or update your browser"]);
     callback("error", null);
   };
 
@@ -27,13 +28,18 @@ function dbOperation(callback) {
 
   DBOpenRequest.onupgradeneeded = function(event) {
     let db = event.target.result;
-    db.createObjectStore("compgames", { keyPath: "vname" });
+    let upgradeTransaction = event.target.transaction;
+    if (!db.objectStoreNames.contains("compgames"))
+      db.createObjectStore("compgames", { keyPath: "vname" });
+    else
+      upgradeTransaction.objectStore("compgames");
   };
 }
 
 export const CompgameStorage = {
+
   add: function(game) {
-    dbOperation((err,db) => {
+    dbOperation((err, db) => {
       if (err) return;
       let objectStore = db
         .transaction("compgames", "readwrite")
@@ -44,13 +50,13 @@ export const CompgameStorage = {
 
   // obj: move and/or fen
   update: function(gameId, obj) {
-    dbOperation((err,db) => {
+    dbOperation((err, db) => {
       let objectStore = db
         .transaction("compgames", "readwrite")
         .objectStore("compgames");
       objectStore.get(gameId).onsuccess = function(event) {
         // Ignoring error silently: shouldn't happen now. TODO?
-        if (event.target.result) {
+        if (!!event.target.result) {
           const game = event.target.result;
           Object.keys(obj).forEach(k => {
             if (k == "move") game.moves.push(obj[k]);
@@ -65,7 +71,7 @@ export const CompgameStorage = {
   // Retrieve any game from its identifier (variant name)
   // NOTE: need callback because result is obtained asynchronously
   get: function(gameId, callback) {
-    dbOperation((err,db) => {
+    dbOperation((err, db) => {
       let objectStore = db
         .transaction("compgames", "readonly")
         .objectStore("compgames");
@@ -77,7 +83,7 @@ export const CompgameStorage = {
 
   // Delete a game in indexedDB
   remove: function(gameId) {
-    dbOperation((err,db) => {
+    dbOperation((err, db) => {
       if (!err) {
         db.transaction("compgames", "readwrite")
           .objectStore("compgames")
@@ -85,4 +91,5 @@ export const CompgameStorage = {
       }
     });
   }
+
 };