X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=8d8b311aec49988cbda7837515c5c1ae84255536;hb=e33e50fa2122c1df2aa9d4d15a2f9d75341b0d70;hp=0876a2d277b63a638c557f9226c20f1545123874;hpb=6d6f45bcf0a293a4dd945a0aee0690ff5fbc8832;p=vchess.git diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index 0876a2d2..8d8b311a 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -55,7 +55,7 @@ main placeholder="5+0, 1h+30s, 5d ..." ) fieldset - label(for="selectRandomLevel") {{ st.tr["Randomness"] }} + label(for="selectRandomLevel") {{ st.tr["Randomness"] }} * select#selectRandomLevel(v-model="newchallenge.randomness") option(value="0") {{ st.tr["Deterministic"] }} option(value="1") {{ st.tr["Symmetric random"] }} @@ -254,7 +254,7 @@ export default { let names = {}; response.challenges.forEach(c => { if (c.uid != this.st.user.id) names[c.uid] = ""; - else if (!!c.target && c.target != this.st.user.id) + else if (c.target && c.target != this.st.user.id) names[c.target] = ""; }); const addChallenges = () => { @@ -407,6 +407,15 @@ export default { processChat: function(chat) { this.send("newchat", { data: chat }); }, + getOppsid: function(c) { + let oppsid = c.from.sid; //may not be defined if corr + offline opp + if (!oppsid) { + oppsid = Object.keys(this.people).find( + sid => this.people[sid].id == c.from.id + ); + } + return oppsid; + }, // Messaging center: socketMessageListener: function(msg) { if (!this.conn) return; @@ -467,7 +476,10 @@ export default { // Disconnect means no more tmpIds: if (data.code == "disconnect") { // Remove the live challenge sent by this player: - ArrayFun.remove(this.challenges, c => c.from.sid == data.from); + ArrayFun.remove( + this.challenges, + c => c.type == "live" && c.from.sid == data.from + ); } else { // Remove the matching live game if now unreachable const gid = data.page.match(/[a-zA-Z0-9]+$/)[0]; @@ -797,7 +809,9 @@ export default { }; this.launchGame(c); } else { - this.send("refusechallenge", { data: c.id, target: c.from.sid }); + const oppsid = this.getOppsid(c); + if (oppsid) + this.send("refusechallenge", { data: c.id, target: oppsid }); } this.send("deletechallenge", { data: c.id }); }, @@ -857,13 +871,8 @@ export default { vid: c.vid, cadence: c.cadence }; - let oppsid = c.from.sid; //may not be defined if corr + offline opp - if (!oppsid) { - oppsid = Object.keys(this.people).find( - sid => this.people[sid].id == c.from.id - ); - } const notifyNewgame = () => { + const oppsid = this.getOppsid(c); if (oppsid) //opponent is online this.send("startgame", { data: gameInfo, target: oppsid });