X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FMyGames.vue;h=5c3522ec55561487c0746a282aca0b8e3710b818;hb=9f88188c42120d985c6c280d2712a3b7f6f7c86c;hp=890d9395192b57d6b0c342c88af5e8277972a19b;hpb=73f8753ff5abf6c5819684920565e655b6858175;p=vchess.git diff --git a/client/src/views/MyGames.vue b/client/src/views/MyGames.vue index 890d9395..5c3522ec 100644 --- a/client/src/views/MyGames.vue +++ b/client/src/views/MyGames.vue @@ -6,7 +6,7 @@ main button.tabbtn#liveGames(@click="setDisplay('live',$event)") | {{ st.tr["Live games"] }} button.tabbtn#corrGames(@click="setDisplay('corr',$event)") - | {{ st.tr["Correspondance games"] }} + | {{ st.tr["Correspondence games"] }} button.tabbtn#importGames(@click="setDisplay('import',$event)") | {{ st.tr["Imported games"] }} GameList( @@ -31,6 +31,7 @@ main v-show="display=='import'" ref="importgames" :games="importGames" + :show-both="true" @show-game="showGame" ) button#loadMoreBtn( @@ -111,7 +112,7 @@ export default { }, mounted: function() { const adjustAndSetDisplay = () => { - // showType is the last type viwed by the user (default) + // showType is the last type viewed by the user (default) let showType = localStorage.getItem("type-myGames") || "live"; // Live games, my turn: highest priority: if (this.liveGames.some(g => !!g.myTurn)) showType = "live"; @@ -153,12 +154,19 @@ export default { // Now ask completed games (partial list) this.loadMore( "live", - () => this.loadMore("corr", adjustAndSetDisplay) + () => this.loadMore("corr", () => { + this.loadMore("import", adjustAndSetDisplay); + }) ); } } ); - } else this.loadMore("live", adjustAndSetDisplay); + } + else { + this.loadMore("live", () => { + this.loadMore("import", adjustAndSetDisplay); + }); + } }); }, beforeDestroy: function() { @@ -175,7 +183,7 @@ export default { setDisplay: function(type, e) { this.display = type; localStorage.setItem("type-myGames", type); - let elt = e ? e.target : document.getElementById(type + "Games"); + let elt = (!!e ? e.target : document.getElementById(type + "Games")); elt.classList.add("active"); elt.classList.remove("somethingnew"); //in case of for (let t of ["live","corr","import"]) { @@ -184,11 +192,19 @@ export default { } }, addGameImport(game) { - if (!game.id) { - alert(this.st.tr[ - "No identifier found: use the upload button in analysis mode"]); - } - else this.importGames.push(game); + game.type = "import"; + ImportgameStorage.add(game, (err) => { + if (!!err) { + if (err.message.indexOf("Key already exists") < 0) { + alert(this.st.tr["An error occurred. Try again!"]); + return; + } + // NOTE: since a random new ID is generated for imported games, + // this error will not occur. + else alert(this.st.tr["The game was already imported"]); + } + this.$router.push("/game/" + game.id); + }); }, tryShowNewsIndicator: function(type) { if ( @@ -228,7 +244,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); @@ -236,7 +252,8 @@ export default { if (thing == "turn") { game.myTurn = !game.myTurn; if (game.myTurn) this.tryShowNewsIndicator(type); - } else game.myTurn = false; + } + else game.myTurn = false; // TODO: forcing refresh like that is ugly and wrong. // How to do it cleanly? this.$refs[type + "games"].$forceUpdate(); @@ -341,7 +358,8 @@ export default { moreGames.forEach(g => g.type = "corr"); this.decorate(moreGames); this.corrGames = this.corrGames.concat(moreGames); - } else this.hasMore["corr"] = false; + } + else this.hasMore["corr"] = false; if (!!cb) cb(); } } @@ -356,7 +374,8 @@ export default { localGames.forEach(g => g.type = "live"); this.decorate(localGames); this.liveGames = this.liveGames.concat(localGames); - } else this.hasMore["live"] = false; + } + else this.hasMore["live"] = false; if (!!cb) cb(); }); } @@ -368,7 +387,8 @@ export default { this.cursor["import"] = importGames[L - 1].created - 1; importGames.forEach(g => g.type = "import"); this.importGames = this.importGames.concat(importGames); - } else this.hasMore["import"] = false; + } + else this.hasMore["import"] = false; if (!!cb) cb(); }); } @@ -377,20 +397,23 @@ export default { }; - + + +