Fix challenge persistence issue
[vchess.git] / client / src / views / Hall.vue
index 636eabc..6a57622 100644 (file)
@@ -113,6 +113,15 @@ export default {
   created: function() {
     // Always add myself to players' list
     this.people.push(this.st.user);
+    // Retrieve live challenge (not older than 30 minute) if any:
+    const chall = JSON.parse(localStorage.getItem("challenge") || "false");
+    if (!!chall)
+    {
+      if ((Date.now() - chall.added)/1000 <= 30*60)
+        this.challenges.push(chall);
+      else
+        localStorage.removeItem("challenge");
+    }
     if (this.st.user.id > 0)
     {
     // Ask server for current corr games (all but mines)
@@ -199,19 +208,17 @@ export default {
           {target: sid}
         )));
       };
-      if (!!to[0])
+      if (!!to)
       {
-        to.forEach(pname => {
-          // Challenge with targeted players
-          const targetSid = this.getSid(pname);
-          if (!targetSid)
-          {
-            if (!!warnDisconnected)
-              alert("Warning: " + pname + " is not connected");
-          }
-          else
-            doSend(code, obj, targetSid);
-        });
+        // Challenge with targeted players
+        const targetSid = this.getSid(to);
+        if (!targetSid)
+        {
+          if (!!warnDisconnected)
+            alert("Warning: " + pname + " is not connected");
+        }
+        else
+          doSend(code, obj, targetSid);
       }
       else
       {
@@ -403,12 +410,13 @@ export default {
       const finishAddChallenge = (cid,warnDisconnected) => {
         chall.id = cid || "c" + getRandString();
         // Send challenge to peers (if connected)
-        this.sendSomethingTo(cto, "challenge", {chall:chall}, !!warnDisconnected);
+        this.sendSomethingTo(chall.to, "challenge", {chall:chall}, !!warnDisconnected);
         chall.added = Date.now();
         chall.type = ctype;
         chall.vname = vname;
         chall.from = this.st.user;
         this.challenges.push(chall);
+        localStorage.setItem("challenge", JSON.stringify(chall));
         document.getElementById("modalNewgame").checked = false;
       };
       const cIdx = this.challenges.findIndex(