From 95a66034082b21e50eff842e26030ce2b6519685 Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Fri, 20 Mar 2020 00:47:24 +0100 Subject: [PATCH] Fix chat in main Hall + remove some duplicated code in Hall --- client/src/components/Chat.vue | 1 + client/src/variants/Knightrelay1.js | 2 +- client/src/views/Hall.vue | 61 ++++++++++------------------- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/client/src/components/Chat.vue b/client/src/components/Chat.vue index 510acdda..a31f8d0b 100644 --- a/client/src/components/Chat.vue +++ b/client/src/components/Chat.vue @@ -42,6 +42,7 @@ export default { sendChat: function() { let chatInput = document.getElementById("inputChat"); const chatTxt = chatInput.value.trim(); + chatInput.focus(); //required on smartphones if (chatTxt == "") return; //nothing to send chatInput.value = ""; const chat = { msg: chatTxt, name: this.st.user.name || "@nonymous" }; diff --git a/client/src/variants/Knightrelay1.js b/client/src/variants/Knightrelay1.js index 1d1ab527..f032e21e 100644 --- a/client/src/variants/Knightrelay1.js +++ b/client/src/variants/Knightrelay1.js @@ -97,7 +97,7 @@ export class Knightrelay1Rules extends ChessRules { return { p: 1, r: 5, - n: 7, //the knight is valuable + n: 0, //the knight isn't captured - value doesn't matter b: 3, q: 9, k: 1000 diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index 47a86975..4d830bbf 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -123,7 +123,7 @@ main p.anonymous @nonymous ({{ anonymousCount() }}) #chat Chat( - :newChat="newChat" + ref="chatcomp" @mychat="processChat" :pastChats="[]" ) @@ -131,7 +131,7 @@ main .row .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2 .button-group - button#peopleBtn(onClick="window.doClick('modalPeople')") + button#peopleBtn(@click="openModalPeople()") | {{ st.tr["Who's there?"] }} button(@click="showNewchallengeForm()") | {{ st.tr["New game"] }} @@ -193,7 +193,7 @@ main ) button#loadMoreBtn( v-if="hasMore" - @click="loadMore()" + @click="loadMoreCorr()" ) | {{ st.tr["Load more"] }} @@ -247,7 +247,6 @@ export default { tchallDiag: "", curChallToAccept: {from: {}}, presetChalls: JSON.parse(localStorage.getItem("presetChalls") || "[]"), - newChat: "", conn: null, connexionString: "", // Related to (killing of) self multi-connects: @@ -319,41 +318,9 @@ export default { this.setDisplay('c', showCtype); this.setDisplay('g', showGtype); // Ask server for current corr games (all but mines) - ajax( - "/observedgames", - "GET", - { - data: { - uid: this.st.user.id, - cursor: this.cursor - }, - success: (response) => { - const L = response.games.length; - if (L > 0) { - this.cursor = response.games[L - 1].created; - if (this.games.length == 0 && this.gdisplay == "live") { - document - .getElementById("btnGcorr") - .classList.add("somethingnew"); - } - } - this.games = this.games.concat( - response.games.map(g => { - const vname = this.getVname(g.vid); - return Object.assign( - {}, - g, - { - type: "corr", - vname: vname - } - ); - }) - ); - } - } - ); + this.loadMoreCorr(); // Also ask for corr challenges (open + sent by/to me) + // List them all, because they are not supposed to be that many (TODO?) ajax( "/challenges", "GET", @@ -426,6 +393,10 @@ export default { ["random-" + pc.randomness]: true }; }, + openModalPeople: function() { + window.doClick("modalPeople"); + document.getElementById("inputChat").focus(); + }, anonymousCount: function() { let count = 0; Object.values(this.people).forEach(p => { @@ -824,7 +795,7 @@ export default { break; } case "newchat": - this.newChat = data.data; + this.$refs["chatcomp"].newChat(data.data); if (!document.getElementById("modalPeople").checked) document.getElementById("peopleBtn").classList.add("somethingnew"); break; @@ -836,7 +807,7 @@ export default { this.conn.addEventListener("message", this.socketMessageListener); this.conn.addEventListener("close", this.socketCloseListener); }, - loadMore: function() { + loadMoreCorr: function() { ajax( "/observedgames", "GET", @@ -848,6 +819,16 @@ export default { success: (res) => { const L = res.games.length; if (L > 0) { + if ( + this.cursor == Number.MAX_SAFE_INTEGER && + this.games.length == 0 && + this.gdisplay == "live" + ) { + // First loading: show indicators + document + .getElementById("btnGcorr") + .classList.add("somethingnew"); + } this.cursor = res.games[L - 1].created; let moreGames = res.games.map(g => { const vname = this.getVname(g.vid); -- 2.44.0