X-Git-Url: https://git.auder.net/images/pieces/current/gitweb.js?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FGame.vue;h=23c45783716158bcf543486bae8b862229d4e4a7;hb=db1f1f9adb920605c7a16b060a7737e54636ee08;hp=f93b5b3a17ca7728924daf9e90a24cdea53f1f45;hpb=e71161fbfffe53b0f4b174e0467cdd98cc70b7b0;p=vchess.git diff --git a/client/src/views/Game.vue b/client/src/views/Game.vue index f93b5b3a..23c45783 100644 --- a/client/src/views/Game.vue +++ b/client/src/views/Game.vue @@ -24,6 +24,7 @@ main :pastChats="game.chats" :newChat="newChat" @mychat="processChat" + @chatcleared="clearChat" ) .row #aboveBoard.col-sm-12.col-md-9.col-md-offset-3.col-lg-10.col-lg-offset-2 @@ -193,6 +194,29 @@ export default { Object.values(this.people).some(p => p.id == player.uid) ); }, + resetChatColor: function() { + // TODO: this is called twice, once on opening an once on closing + document.getElementById("chatBtn").classList.remove("somethingnew"); + }, + processChat: function(chat) { + this.send("newchat", { data: chat }); + // NOTE: anonymous chats in corr games are not stored on server (TODO?) + if (this.game.type == "corr" && this.st.user.id > 0) + GameStorage.update(this.gameRef.id, { chat: chat }); + }, + clearChat: function() { + // Nothing more to do if game is live (chats not recorded) + if (this.game.mycolor && this.game.type == "corr") { + ajax( + "/chats", + "DELETE", + {gid: this.game.id}, + () => { + this.$set(this.game, "pastChats", []); + } + ); + } + }, socketMessageListener: function(msg) { if (!this.conn) return; const data = JSON.parse(msg.data); @@ -294,7 +318,11 @@ export default { break; case "fullgame": // Callback "roomInit" to poll clients only after game is loaded - this.loadGame(data.data, this.roomInit); + let game = data.data; + // Move format isn't the same in storage and in browser, + // because of the 'addTime' field. + game.moves = game.moves.map(m => { return m.move || m; }); + this.loadGame(game, this.roomInit); break; case "asklastate": // Sending last state if I played a move or score != "*" @@ -630,7 +658,10 @@ export default { const sendMove = { move: filtered_move, addTime: addTime, - cancelDrawOffer: this.drawOffer == "" + cancelDrawOffer: this.drawOffer == "", + // Players' SID required for /mygames page + // TODO: precompute and add this field to game object? + players: this.game.players.map(p => p.sid) }; this.send("newmove", { data: sendMove }); } @@ -713,16 +744,6 @@ export default { } else doProcessMove(); }, - resetChatColor: function() { - // TODO: this is called twice, once on opening an once on closing - document.getElementById("chatBtn").classList.remove("somethingnew"); - }, - processChat: function(chat) { - this.send("newchat", { data: chat }); - // NOTE: anonymous chats in corr games are not stored on server (TODO?) - if (this.game.type == "corr" && this.st.user.id > 0) - GameStorage.update(this.gameRef.id, { chat: chat }); - }, gameOver: function(score, scoreMsg) { this.game.score = score; this.$set(this.game, "scoreMsg", scoreMsg || getScoreMessage(score));