From: Benjamin Auder <benjamin.auder@somewhere>
Date: Mon, 8 Jul 2019 08:27:15 +0000 (+0200)
Subject: Fix a non-deleted challenge bug
X-Git-Url: https://git.auder.net/%7B%7B%20asset('mixstore/images/assets/pieces/css/index.css?a=commitdiff_plain;h=1ba761c8fc1dafaaf8e47d08be6b38cdf0766ea3;p=vchess.git

Fix a non-deleted challenge bug
---

diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue
index 95a9e954..13d9b633 100644
--- a/client/src/views/Hall.vue
+++ b/client/src/views/Hall.vue
@@ -361,6 +361,7 @@ export default {
         }
         case "deletechallenge":
         {
+          // NOTE: the challenge may be already removed
           ArrayFun.remove(this.challenges, c => c.id == data.cid);
           break;
         }
@@ -482,7 +483,7 @@ export default {
       else //accept (or refuse) a challenge
       {
         c.accepted = true;
-        if (!!c.to[0])
+        if (!!c.to)
         {
           // TODO: if special FEN, show diagram after loading variant
           c.accepted = confirm("Accept challenge?");
@@ -490,17 +491,22 @@ export default {
         this.st.conn.send(JSON.stringify({
           code: (c.accepted ? "accept" : "refuse") + "challenge",
           cid: c.id, target: c.from.sid}));
-        if (c.type == "corr" && c.accepted)
+        if (c.accepted)
         {
-          ajax(
-            "/challenges",
-            "PUT",
-            {id: this.challenges[cIdx].id}
-          );
+          if (c.type == "corr")
+          {
+            ajax(
+              "/challenges",
+              "PUT",
+              {id: this.challenges[cIdx].id}
+            );
+          }
         }
-        if (!c.accepted)
+        else
         {
           ArrayFun.remove(this.challenges, ch => ch.id == c.id);
+          if (!c.to) //TODO: send to everyone except me and opponent ?
+            this.sendSomethingTo("", "deletechallenge", {cid: this.challenges[cIdx].id});
           if (c.type == "corr")
           {
             ajax(