Merge branch 'master' of auder.net:vchess
[vchess.git] / client / src / views / Hall.vue
index 033659b..a48997a 100644 (file)
@@ -19,7 +19,10 @@ main
       .button-group#buttonsTchall
         button.acceptBtn(@click="decisionChallenge(true)") {{ st.tr["Accept challenge?"] }}
         button.refuseBtn(@click="decisionChallenge(false)") {{ st.tr["Refuse"] }}
-  input#modalNewgame.modal(type="checkbox")
+  input#modalNewgame.modal(
+    type="checkbox"
+    @change="cadenceFocusIfOpened($event)"
+  )
   div#newgameDiv(
     role="dialog"
     data-checkbox="modalNewgame"
@@ -42,13 +45,14 @@ main
         fieldset
           label(for="cadence") {{ st.tr["Cadence"] }} *
           div#predefinedCadences
-            button(type="button") 3+2
-            button(type="button") 5+3
             button(type="button") 15+5
+            button(type="button") 45+30
+            button(type="button") 3d
+            button(type="button") 7d
           input#cadence(
             type="text"
             v-model="newchallenge.cadence"
-            placeholder="5+0, 1h+30s, 7d+1d ..."
+            placeholder="5+0, 1h+30s, 5d ..."
           )
         fieldset(v-if="st.user.id > 0")
           label(for="selectPlayers") {{ st.tr["Play with?"] }}
@@ -237,7 +241,6 @@ export default {
       let names = {};
       response.challenges.forEach(c => {
         if (c.uid != this.st.user.id) names[c.uid] = "";
-        //unknwon for now
         else if (!!c.target && c.target != this.st.user.id)
           names[c.target] = "";
       });
@@ -316,6 +319,10 @@ export default {
   },
   methods: {
     // Helpers:
+    cadenceFocusIfOpened: function() {
+      if (event.target.checked)
+        document.getElementById("cadence").focus();
+    },
     send: function(code, obj) {
       if (this.conn) {
         this.conn.send(JSON.stringify(Object.assign({ code: code }, obj)));
@@ -479,12 +486,8 @@ export default {
         }
         case "killed":
           // I logged in elsewhere:
-          alert(this.st.tr["New connexion detected: tab now offline"]);
-          // TODO: this fails. See https://github.com/websockets/ws/issues/489
-          //this.conn.removeEventListener("message", this.socketMessageListener);
-          //this.conn.removeEventListener("close", this.socketCloseListener);
-          //this.conn.close();
           this.conn = null;
+          alert(this.st.tr["New connexion detected: tab now offline"]);
           break;
         case "askidentity": {
           // Request for identification (TODO: anonymous shouldn't need to reply)
@@ -751,6 +754,13 @@ export default {
         localStorage.setItem("cadence", chall.cadence);
         localStorage.setItem("vid", chall.vid);
         document.getElementById("modalNewgame").checked = false;
+        // Show the challenge if not on current display
+        if (
+          (ctype == "live" && this.cdisplay == "corr") ||
+          (ctype == "corr" && this.cdisplay == "live")
+        ) {
+          this.setDisplay('c', ctype);
+        }
       };
       if (ctype == "live") {
         // Live challenges have a random ID
@@ -885,8 +895,8 @@ export default {
       GameStorage.add(game, (err) => {
         // If an error occurred, game is not added: abort
         if (!err) {
-          if (this.st.settings.sound >= 1)
-            new Audio("/sounds/newgame.mp3").play().catch(() => {});
+          if (this.st.settings.sound)
+            new Audio("/sounds/newgame.wav").play().catch(() => {});
           this.$router.push("/game/" + gameInfo.id);
         }
       });