X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Futils%2FgameStorage.js;h=a8aa6edf8b333a05bd6525e7f3796d7c503f9a05;hb=c0b2760655298f07eb403da70307636e57b2813a;hp=77acf94356b546dc98ed310f968c1ed490adc9bd;hpb=66d03f23c9ce085877c3f7272db44dc382762b5a;p=vchess.git diff --git a/client/src/utils/gameStorage.js b/client/src/utils/gameStorage.js index 77acf943..a8aa6edf 100644 --- a/client/src/utils/gameStorage.js +++ b/client/src/utils/gameStorage.js @@ -16,6 +16,8 @@ // score: string (several options; '*' == running), // } +import { ajax } from "@/utils/ajax"; + function dbOperation(callback) { let db = null; @@ -45,6 +47,7 @@ function dbOperation(callback) export const GameStorage = { // Optional callback to get error status + // TODO: this func called from Hall seems to not work now... add: function(game, callback) { dbOperation((db) => { @@ -85,34 +88,46 @@ export const GameStorage = }); }, - // Retrieve any live game from its identifiers (locally, running or not) - // NOTE: need callback because result is obtained asynchronously - get: function(gameId, callback) + // Retrieve all local games (running, completed, imported...) + getAll: function(callback) { dbOperation((db) => { let objectStore = db.transaction('games').objectStore('games'); - if (!gameId) //retrieve all - { - let games = []; - objectStore.openCursor().onsuccess = function(event) { - let cursor = event.target.result; - // if there is still another cursor to go, keep running this code - if (cursor) - { - games.push(cursor.value); - cursor.continue(); - } - else - callback(games); + let games = []; + objectStore.openCursor().onsuccess = function(event) { + let cursor = event.target.result; + // if there is still another cursor to go, keep running this code + if (cursor) + { + games.push(cursor.value); + cursor.continue(); } + else + callback(games); } - else //just one game - { + }); + }, + + // Retrieve any game from its identifiers (locally or on server) + // NOTE: need callback because result is obtained asynchronously + get: function(gameId, callback) + { + // corr games identifiers are integers + if (Number.isInteger(gameId) || !isNaN(parseInt(gameId))) + { + ajax("/games", "GET", {gid:gameId}, res => { + callback(res.game); + }); + } + else //local game + { + dbOperation((db) => { + let objectStore = db.transaction('games').objectStore('games'); objectStore.get(gameId).onsuccess = function(event) { callback(event.target.result); } - } - }); + }); + } }, getCurrent: function(callback)