From 1ba761c8fc1dafaaf8e47d08be6b38cdf0766ea3 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Mon, 8 Jul 2019 10:27:15 +0200
Subject: [PATCH] Fix a non-deleted challenge bug

---
 client/src/views/Hall.vue | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

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(
-- 
2.44.0