},
watch: {
$route: function(to, from) {
- if (from.params["id"] != to.params["id"]) {
+ if (to.path.length < 6 || to.path.substr(6) != "/game/")
+ // Page change
+ this.cleanBeforeDestroy();
+ else if (from.params["id"] != to.params["id"]) {
// Change everything:
this.cleanBeforeDestroy();
let boardDiv = document.querySelector(".game");
this.atCreation();
},
mounted: function() {
- document.addEventListener('visibilitychange', this.visibilityChange);
["chatWrap", "infoDiv"].forEach(eltName => {
document.getElementById(eltName)
.addEventListener("click", processModalClick);
}
},
beforeDestroy: function() {
- document.removeEventListener('visibilitychange', this.visibilityChange);
this.cleanBeforeDestroy();
},
methods: {
+ cleanBeforeDestroy: function() {
+ document.removeEventListener('visibilitychange', this.visibilityChange);
+ if (!!this.askLastate)
+ clearInterval(this.askLastate);
+ if (!!this.retrySendmove)
+ clearInterval(this.retrySendmove);
+ if (!!this.clockUpdate)
+ clearInterval(this.clockUpdate);
+ this.send("disconnect");
+ },
visibilityChange: function() {
// TODO: Use document.hidden? https://webplatform.news/issues/2019-03-27
this.send(
);
},
atCreation: function() {
+ document.addEventListener('visibilitychange', this.visibilityChange);
// 0] (Re)Set variables
this.gameRef = this.$route.params["id"];
// next = next corr games IDs to navigate faster (if applicable)
socketInit(() => { this.send("askfullgame"); });
});
},
- cleanBeforeDestroy: function() {
- if (!!this.askLastate)
- clearInterval(this.askLastate);
- if (!!this.retrySendmove)
- clearInterval(this.retrySendmove);
- if (!!this.clockUpdate)
- clearInterval(this.clockUpdate);
- this.send("disconnect");
- },
roomInit: function() {
if (!this.roomInitialized) {
// Notify the room only now that I connected, because
});
if (!this.newchallenge.V && this.newchallenge.vid > 0)
this.loadNewchallVariant();
+ },
+ $route: function(to, from) {
+ if (to.path != "/") this.cleanBeforeDestroy();
}
},
created: function() {
+ document.addEventListener('visibilitychange', this.visibilityChange);
+ window.addEventListener("beforeunload", this.cleanBeforeDestroy);
if (this.st.variants.length > 0 && this.newchallenge.vid > 0)
this.loadNewchallVariant();
const my = this.st.user;
this.conn.addEventListener("close", this.socketCloseListener);
},
mounted: function() {
- document.addEventListener('visibilitychange', this.visibilityChange);
["peopleWrap", "infoDiv", "newgameDiv"].forEach(eltName => {
document.getElementById(eltName)
.addEventListener("click", processModalClick);
);
},
beforeDestroy: function() {
- document.removeEventListener('visibilitychange', this.visibilityChange);
- this.send("disconnect");
+ this.cleanBeforeDestroy();
},
methods: {
+ cleanBeforeDestroy: function() {
+ document.removeEventListener('visibilitychange', this.visibilityChange);
+ window.removeEventListener("beforeunload", this.cleanBeforeDestroy);
+ this.send("disconnect");
+ },
getRandomnessClass: function(pc) {
return {
["random-" + pc.randomness]: true
connexionString: ""
};
},
+ watch: {
+ $route: function(to, from) {
+ if (to.path != "/mygames") this.cleanBeforeDestroy();
+ }
+ },
created: function() {
+ window.addEventListener("beforeunload", this.cleanBeforeDestroy);
// Initialize connection
this.connexionString =
params.socketUrl +
});
},
beforeDestroy: function() {
- this.conn.send(JSON.stringify({code: "disconnect"}));
+ this.cleanBeforeDestroy();
},
methods: {
+ cleanBeforeDestroy: function() {
+ window.removeEventListener("beforeunload", this.cleanBeforeDestroy);
+ this.conn.send(JSON.stringify({code: "disconnect"}));
+ },
setDisplay: function(type, e) {
this.display = type;
localStorage.setItem("type-myGames", type);
"FROM Games " +
"WHERE id = " + id;
db.get(query, (err2, ret2) => {
- const daysTc = parseInt(ret2.cadence.match(/\(^[0-9]+\)/)[0]);
+ const daysTc = parseInt(ret2.cadence.match(/^[0-9]+/)[0]);
if (Date.now() - ret.lastPlayed > daysTc * 24 * 3600 * 1000)
finishAndSendQuery();
else cb({ errmsg: "Time not over" });