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");
+ dbOperation((err, db) => {
+ if (err) return;
+ let objectStore = db
+ .transaction("compgames", "readwrite")
+ .objectStore("compgames");
objectStore.add(game);
});
},
// 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]);
// Retrieve any game from its identifier (variant name)
// NOTE: need callback because result is obtained asynchronously
get: function(gameId, callback) {
- dbOperation((err,db) => {
- let objectStore = db.transaction("compgames").objectStore("compgames");
+ dbOperation((err, db) => {
+ let objectStore = db
+ .transaction("compgames", "readonly")
+ .objectStore("compgames");
objectStore.get(gameId).onsuccess = function(event) {
callback(event.target.result);
};
// Delete a game in indexedDB
remove: function(gameId) {
- dbOperation((err,db) => {
+ dbOperation((err, db) => {
if (!err) {
- let transaction = db.transaction(["compgames"], "readwrite");
- transaction.objectStore("compgames").delete(gameId);
+ db.transaction("compgames", "readwrite")
+ .objectStore("compgames")
+ .delete(gameId);
}
});
}
+
};