X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FMyGames.vue;h=d30f5112a3d10f930b3c2cdf8ac6c64aac786fe0;hb=4f07d54fac76da08cc40d5742dd359b672c162d8;hp=6835b55641ddc792bd78e119d49e4eed687a45b2;hpb=6e0f28425075e6d2d79cab6d30bca6ce6d55f19d;p=vchess.git diff --git a/client/src/views/MyGames.vue b/client/src/views/MyGames.vue index 6835b556..d30f5112 100644 --- a/client/src/views/MyGames.vue +++ b/client/src/views/MyGames.vue @@ -84,6 +84,14 @@ export default { watch: { $route: function(to, from) { if (to.path != "/mygames") this.cleanBeforeDestroy(); + }, + // st.variants changes only once, at loading from [] to [...] + "st.variants": function() { + // Set potential games variant names + display: + this.livesGames.concat(this.corrGames).concat(this.importGames) + .forEach(o => { + if (!o.vname) this.setVname(o); + }); } }, created: function() { @@ -191,6 +199,14 @@ export default { document.getElementById(t + "Games").classList.remove("active"); } }, + // TODO: duplicated from Hall.vue: + setVname: function(obj) { + const variant = this.st.variants.find(v => v.id == obj.vid); + if (!!variant) { + obj.vname = variant.name; + obj.vdisp = variant.display; + } + }, addGameImport(game) { game.type = "import"; ImportgameStorage.add(game, (err) => { @@ -230,6 +246,7 @@ export default { if ((rem == 0 && g.myColor == 'w') || (rem == 1 && g.myColor == 'b')) g.myTurn = true; } + this.setVname(g); }); }, socketMessageListener: function(msg) { @@ -244,7 +261,7 @@ export default { case "notifyturn": case "notifyscore": { const info = data.data; - const type = (!!parseInt(info.gid) ? "corr" : "live"); + const type = (!!parseInt(info.gid, 10) ? "corr" : "live"); let game = gamesArrays[type].find(g => g.id == info.gid); // "notifything" --> "thing": const thing = data.code.substr(6); @@ -260,15 +277,11 @@ export default { break; } case "notifynewgame": { - const gameInfo = data.data; - // st.variants might be uninitialized, - // if unlucky and newgame right after connect: - const v = this.st.variants.find(v => v.id == gameInfo.vid); - const vname = !!v ? v.name : ""; + let gameInfo = data.data; + this.setVname(gameInfo); const type = (gameInfo.cadence.indexOf('d') >= 0 ? "corr": "live"); let game = Object.assign( { - vname: vname, type: type, score: "*", created: Date.now() @@ -371,7 +384,10 @@ export default { if (L > 0) { // Add "-1" because IDBKeyRange.upperBound includes boundary this.cursor["live"] = localGames[L - 1].created - 1; - localGames.forEach(g => g.type = "live"); + localGames.forEach(g => { + g.type = "live"; + if (!g.options) g.options = {}; //TODO: remove patch + }); this.decorate(localGames); this.liveGames = this.liveGames.concat(localGames); } @@ -385,7 +401,11 @@ export default { if (L > 0) { // Add "-1" because IDBKeyRange.upperBound includes boundary this.cursor["import"] = importGames[L - 1].created - 1; - importGames.forEach(g => g.type = "import"); + importGames.forEach(g => { + g.type = "import"; + if (!g.options) g.options = {}; //TODO: remove patch + this.setVname(g); + }); this.importGames = this.importGames.concat(importGames); } else this.hasMore["import"] = false;