X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Futils%2FgameStorage.js;h=3e3b68403d4de92eb0da99a36875f6545b33bcbb;hb=ded43c88fad60fd8f9bb46aabd67f3f2092f65f3;hp=6b4c7113dd468cd41ac7b7386a92907db2018418;hpb=1a0215292a1eda58217f90d59fd7cdce1dd4c07c;p=vchess.git diff --git a/client/src/utils/gameStorage.js b/client/src/utils/gameStorage.js index 6b4c7113..3e3b6840 100644 --- a/client/src/utils/gameStorage.js +++ b/client/src/utils/gameStorage.js @@ -22,7 +22,8 @@ function dbOperation(callback) { 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); }; @@ -50,9 +51,10 @@ function dbOperation(callback) { } export const GameStorage = { + // Optional callback to get error status add: function(game, callback) { - dbOperation((err,db) => { + dbOperation((err, db) => { if (!!err) { callback("error"); return; @@ -72,21 +74,23 @@ export const GameStorage = { // obj: chat, move, fen, clocks, score[Msg], initime, ... update: function(gameId, obj) { - // live - dbOperation((err,db) => { + dbOperation((err, db) => { let objectStore = db .transaction("games", "readwrite") .objectStore("games"); objectStore.get(gameId).onsuccess = function(event) { // Ignoring error silently: shouldn't happen now. TODO? - if (event.target.result) { + if (!!event.target.result) { let game = event.target.result; // Hidden tabs are delayed, to prevent multi-updates: 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 == "chatRead") game.chatRead = Date.now(); else if (k == "delchat") game.chats = []; + else if (k == "playerName") + game.players[obj[k].idx].name = obj[k].name; else game[k] = obj[k]; }); objectStore.put(game); //save updated data @@ -97,7 +101,7 @@ export const GameStorage = { // Retrieve (all) running local games getRunning: function(callback) { - dbOperation((err,db) => { + dbOperation((err, db) => { let objectStore = db .transaction("games", "readonly") .objectStore("games"); @@ -124,7 +128,7 @@ export const GameStorage = { // Retrieve completed local games getNext: function(upperDt, callback) { - dbOperation((err,db) => { + dbOperation((err, db) => { let objectStore = db .transaction("games", "readonly") .objectStore("games"); @@ -156,11 +160,10 @@ export const GameStorage = { }); }, - // Retrieve any game from its identifiers (locally or on server) + // Retrieve any game from its identifier. // NOTE: need callback because result is obtained asynchronously get: function(gameId, callback) { - // Local game - dbOperation((err,db) => { + dbOperation((err, db) => { let objectStore = db.transaction("games").objectStore("games"); objectStore.get(gameId).onsuccess = function(event) { // event.target.result is null if game not found @@ -171,7 +174,7 @@ export const GameStorage = { // Delete a game in indexedDB remove: function(gameId, callback) { - dbOperation((err,db) => { + dbOperation((err, db) => { if (!err) { let transaction = db.transaction("games", "readwrite"); transaction.oncomplete = function() { @@ -181,4 +184,5 @@ export const GameStorage = { } }); } + };