+ tryShowNewsIndicator: function(type) {
+ if (
+ (type == "live" && this.display == "corr") ||
+ (type == "corr" && this.display == "live")
+ ) {
+ document
+ .getElementById(type + "Games")
+ .classList.add("somethingnew");
+ }
+ },
+ socketMessageListener: function(msg) {
+ const data = JSON.parse(msg.data);
+ switch (data.code) {
+ // NOTE: no need to increment movesCount: unused if turn is provided
+ case "notifyturn":
+ case "notifyscore": {
+ const info = data.data;
+ let games =
+ !!parseInt(info.gid)
+ ? this.corrGames
+ : this.liveGames;
+ let g = games.find(g => g.id == info.gid);
+ // "notifything" --> "thing":
+ const thing = data.code.substr(6);
+ this.$set(g, thing, info[thing]);
+ this.tryShowNewsIndicator(g.type);
+ break;
+ }
+ case "notifynewgame": {
+ const gameInfo = data.data;
+ // st.variants might be uninitialized,
+ // if unlucky and newgame right after connect:
+ const v = this.st.variants.find(v => v.id == gameInfo.vid);
+ const vname = !!v ? v.name : "";
+ const type = gameInfo.cadence.indexOf('d') >= 0 ? "corr": "live";
+ const game = Object.assign(
+ {
+ vname: vname,
+ type: type,
+ score: "*"
+ },
+ gameInfo
+ );
+ this[type + "Games"].push(game);
+ this.tryShowNewsIndicator(type);
+ break;
+ }
+ }
+ },
+ socketCloseListener: function() {
+ this.conn = new WebSocket(this.connexionString);
+ this.conn.addEventListener("message", this.socketMessageListener);
+ this.conn.addEventListener("close", this.socketCloseListener);