X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Futils%2FgameStorage.js;h=62ad1fab1ad512e1d65550bf3244ed5c9343f250;hb=2c5d7b20742b802d9c47916915c1114bcfc9a9c3;hp=fc179f19b8bd865b54a914e1f02bed774c7c3cb2;hpb=934f7f70431e9892b3ea48ba199356b4f24eaf1b;p=vchess.git diff --git a/client/src/utils/gameStorage.js b/client/src/utils/gameStorage.js index fc179f19..62ad1fab 100644 --- a/client/src/utils/gameStorage.js +++ b/client/src/utils/gameStorage.js @@ -19,10 +19,11 @@ import { store } from "@/store"; function dbOperation(callback) { let db = null; - let DBOpenRequest = window.indexedDB.open("vchess", 4); + let DBOpenRequest = window.indexedDB.open("vchess", 5); 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); }; @@ -34,11 +35,18 @@ function dbOperation(callback) { DBOpenRequest.onupgradeneeded = function(event) { let db = event.target.result; - let objectStore = db.createObjectStore("games", { keyPath: "id" }); - // To sarch games by score (useful for running games) - objectStore.createIndex("score", "score", { unique: false }); - // To search by date intervals. Two games cannot start at the same time - objectStore.createIndex("created", "created", { unique: true }); + let upgradeTransaction = event.target.transaction; + let objectStore = undefined; + if (!db.objectStoreNames.contains("games")) + objectStore = db.createObjectStore("games", { keyPath: "id" }); + else + objectStore = upgradeTransaction.objectStore("games"); + if (!objectStore.indexNames.contains("score")) + // To sarch games by score (useful for running games) + objectStore.createIndex("score", "score", { unique: false }); + if (!objectStore.indexNames.contains("created")) + // To search by date intervals. Two games cannot start at the same time + objectStore.createIndex("created", "created", { unique: true }); }; } @@ -78,6 +86,8 @@ export const GameStorage = { if (obj.moveIdx < game.moves.length) return; Object.keys(obj).forEach(k => { if (k == "move") game.moves.push(obj[k]); + else if (k == "chat") game.chats.push(obj[k]); + else if (k == "delchat") game.chats = []; else game[k] = obj[k]; }); objectStore.put(game); //save updated data