Fix targetted challenge deletion after refusal
[vchess.git] / client / src / views / Hall.vue
index 83de5a4..5cbe0c8 100644 (file)
@@ -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 = () => {
@@ -476,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];
@@ -807,8 +810,10 @@ export default {
         this.launchGame(c);
       } else {
         const oppsid = this.getOppsid(c);
-        if (oppSid)
+        if (oppsid)
           this.send("refusechallenge", { data: c.id, target: oppsid });
+        if (c.type == "corr")
+          ajax("/challenges", "DELETE", { id: c.id });
       }
       this.send("deletechallenge", { data: c.id });
     },
@@ -847,9 +852,8 @@ export default {
       }
       else {
         // My challenge
-        if (c.type == "corr") {
+        if (c.type == "corr")
           ajax("/challenges", "DELETE", { id: c.id });
-        }
         this.send("deletechallenge", { data: c.id });
       }
       // In all cases, the challenge is consumed: