From 40477190d905a715d59a800279a20da4ef8135ed Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Tue, 16 Jul 2019 18:42:43 +0200
Subject: [PATCH] Small improvement in Hall

---
 client/src/views/Game.vue |  1 +
 client/src/views/Hall.vue | 39 ++++++++++++---------------------------
 2 files changed, 13 insertions(+), 27 deletions(-)

diff --git a/client/src/views/Game.vue b/client/src/views/Game.vue
index 5eeb7fd5..803751eb 100644
--- a/client/src/views/Game.vue
+++ b/client/src/views/Game.vue
@@ -211,6 +211,7 @@ export default {
           break;
       }
     };
+    // TODO: onopen, ask lastState informations + update observers and players status
     const socketCloseListener = () => {
       this.st.conn.addEventListener('message', socketMessageListener);
       this.st.conn.addEventListener('close', socketCloseListener);
diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue
index ae45e658..afa2173d 100644
--- a/client/src/views/Hall.vue
+++ b/client/src/views/Hall.vue
@@ -141,7 +141,7 @@ export default {
         response => {
           console.log(response.challenges);
           // TODO: post-treatment on challenges ?
-          this.challenges = this.challenges.concat(response.challenges);
+          Array.prototype.push.apply(this.challenges, response.challenges);
         }
       );
     }
@@ -466,12 +466,14 @@ export default {
       console.log("click challenge");
       console.log(c);
 
-      if (c.from.sid == this.st.user.sid
-        || (this.st.user.id > 0 && c.from.id == this.st.user.id))
+      // In all cases, the challenge is consumed:
+      ArrayFun.remove(this.challenges, ch => ch.id == c.id);
+
+      if (c.from.sid == this.st.user.sid //live
+        || (this.st.user.id > 0 && c.from.id == this.st.user.id)) //corr
       {
         // It's my challenge: cancel it
         this.sendSomethingTo(c.to, "deletechallenge", {cid:c.id});
-        ArrayFun.remove(this.challenges, ch => ch.id == c.id);
         if (c.type == "corr")
         {
           ajax(
@@ -492,30 +494,13 @@ export default {
         this.st.conn.send(JSON.stringify({
           code: (c.accepted ? "accept" : "refuse") + "challenge",
           cid: c.id, target: c.from.sid}));
-        if (c.accepted)
-        {
-          if (c.type == "corr")
-          {
-            ajax(
-              "/challenges",
-              "PUT",
-              {id: this.challenges[cIdx].id}
-            );
-          }
-        }
-        else
+        if (c.type == "corr")
         {
-          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(
-              "/challenges",
-              "DELETE",
-              {id: this.challenges[cIdx].id}
-            );
-          }
+          ajax(
+            "/challenges",
+            accepted ? "PUT" : "DELETE",
+            {id: this.challenges[cIdx].id}
+          );
         }
       }
     },
-- 
2.44.0