Fix promotion bug on smartphones
authorBenjamin Auder <benjamin.auder@somewhere>
Thu, 20 Dec 2018 08:55:16 +0000 (09:55 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Thu, 20 Dec 2018 08:55:16 +0000 (09:55 +0100)
package-lock.json
public/javascripts/components/game.js
sockets.js

index 555c0d8..cc552a2 100644 (file)
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.2.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.1",
             "yallist": "^3.0.0"
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
index a17876d..17f3b18 100644 (file)
@@ -257,7 +257,11 @@ Vue.component('my-game', {
                                                                attrs: { "src": '/images/pieces/' +
                                                                        VariantRules.getPpath(m.appear[0].c+m.appear[0].p) + '.svg' },
                                                                'class': { 'choice-piece': true },
-                                                               on: { "click": e => { this.play(m); this.choices=[]; } },
+                                                               on: {
+                                                                       "click": e => { this.play(m); this.choices=[]; },
+                                                                       // NOTE: add 'touchstart' event to fix a problem on smartphones
+                                                                       "touchstart": e => { this.play(m); this.choices=[]; },
+                                                               },
                                                        })
                                                ]
                                        );
index c130dd7..2d9117d 100644 (file)
@@ -2,6 +2,17 @@ const url = require('url');
 const sqlite3 = require('sqlite3');
 const db = new sqlite3.Database('db/vchess.sqlite');
 
+// Node version in Ubuntu 16.04 does not know about URL class
+function getJsonFromUrl(url) {
+       var query = url.substr(2); //starts with "/?"
+       var result = {};
+       query.split("&").forEach(function(part) {
+               var item = part.split("=");
+               result[item[0]] = decodeURIComponent(item[1]);
+       });
+       return result;
+}
+
 module.exports = function(wss) {
        db.serialize(function() {
                db.all("SELECT * FROM Variants", (err,variants) => {
@@ -12,9 +23,12 @@ module.exports = function(wss) {
                        // No-op function as a callback when sending messages
                        const noop = () => { };
                        wss.on("connection", (socket, req) => {
-                               const params = new URL("http://localhost" + req.url).searchParams;
-                               const sid = params.get("sid");
-                               const page = params.get("page");
+//                             const params = new URL("http://localhost" + req.url).searchParams;
+//                             const sid = params.get("sid");
+//                             const page = params.get("page");
+                               var query = getJsonFromUrl(req.url);
+                               const sid = query["sid"];
+                               const page = query["page"];
                                // Ignore duplicate connections:
                                if (!!clients[page][sid])
                                {