X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FGame.vue;h=f7e5549453c65a8ff24c2355ce8d52f3af1848c1;hp=ddbd3309e530766cc2177c3d44ac2f16a40d0d69;hb=1112f1fdd39a4599cebc4b0b03bee1d28f1236ee;hpb=a8f0bbcb3808c8a8af548ab335c61674cffcb6c3 diff --git a/client/src/views/Game.vue b/client/src/views/Game.vue index ddbd3309..f7e55494 100644 --- a/client/src/views/Game.vue +++ b/client/src/views/Game.vue @@ -192,7 +192,10 @@ export default { }, 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"); @@ -210,7 +213,6 @@ export default { this.atCreation(); }, mounted: function() { - document.addEventListener('visibilitychange', this.visibilityChange); ["chatWrap", "infoDiv"].forEach(eltName => { document.getElementById(eltName) .addEventListener("click", processModalClick); @@ -223,10 +225,19 @@ export default { } }, 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( @@ -236,6 +247,7 @@ export default { ); }, 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) @@ -310,15 +322,6 @@ export default { 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