Add unambiguous section in the PGN + some fixes + code formatting and fix typos
[vchess.git] / client / src / utils / compgameStorage.js
index 05a2074..e30a69f 100644 (file)
@@ -15,29 +15,34 @@ 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"]);
-    callback("error",null);
+    alert(store.state.tr[
+      "Database error: stop private browsing, or update your browser"]);
+    callback("error", null);
   };
 
   DBOpenRequest.onsuccess = function(event) {
     db = DBOpenRequest.result;
-    callback(null,db);
+    callback(null, db);
     db.close();
   };
 
   DBOpenRequest.onupgradeneeded = function(event) {
     let db = event.target.result;
-    let objectStore = 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) => {
-      if (err)
-        return;
-      let transaction = db.transaction("compgames", "readwrite");
-      let objectStore = transaction.objectStore("compgames");
+      if (err) return;
+      let objectStore = db
+        .transaction("compgames", "readwrite")
+        .objectStore("compgames");
       objectStore.add(game);
     });
   },
@@ -66,7 +71,9 @@ export const CompgameStorage = {
   // NOTE: need callback because result is obtained asynchronously
   get: function(gameId, callback) {
     dbOperation((err,db) => {
-      let objectStore = db.transaction("compgames").objectStore("compgames");
+      let objectStore = db
+        .transaction("compgames", "readonly")
+        .objectStore("compgames");
       objectStore.get(gameId).onsuccess = function(event) {
         callback(event.target.result);
       };
@@ -77,8 +84,9 @@ export const CompgameStorage = {
   remove: function(gameId) {
     dbOperation((err,db) => {
       if (!err) {
-        let transaction = db.transaction(["compgames"], "readwrite");
-        transaction.objectStore("compgames").delete(gameId);
+        db.transaction("compgames", "readwrite")
+          .objectStore("compgames")
+          .delete(gameId);
       }
     });
   }