From f8477c0307ccebbc47fc0da4cd8ba44dfb2805cf Mon Sep 17 00:00:00 2001 From: PhilReact Date: Fri, 8 Sep 2023 21:35:08 -0500 Subject: [PATCH] don't add new msg if passed max chat length --- plugins/plugins/core/components/ChatPage.js | 44 ++++++++++--------- .../plugins/core/components/ChatScroller.js | 38 +++++++++------- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/plugins/plugins/core/components/ChatPage.js b/plugins/plugins/core/components/ChatPage.js index 2fce10fd..0f1be491 100644 --- a/plugins/plugins/core/components/ChatPage.js +++ b/plugins/plugins/core/components/ChatPage.js @@ -55,7 +55,8 @@ const parentEpml = new Epml({ type: 'WINDOW', source: window.parent }) export const queue = new RequestQueue(); -export const chatLimit = 40 +export const chatLimit = 10 +export const totalMsgCount = 20 class ChatPage extends LitElement { static get properties() { return { @@ -2748,18 +2749,18 @@ class ChatPage extends LitElement { let list = [...decodeMsgs] - // await new Promise((res, rej) => { + await new Promise((res, rej) => { - // this.webWorkerSortMessages.postMessage({list}); + this.webWorkerSortMessages.postMessage({list}); - // this.webWorkerSortMessages.onmessage = e => { - // console.log('e',e) + this.webWorkerSortMessages.onmessage = e => { + console.log('e',e) - // list = e.data - // res() + list = e.data + res() - // } - // }) + } + }) this.messagesRendered = { messages: list, @@ -2811,18 +2812,18 @@ class ChatPage extends LitElement { })); let list = [...decodeMsgs] - // await new Promise((res, rej) => { + await new Promise((res, rej) => { - // this.webWorkerSortMessages.postMessage({list}); + this.webWorkerSortMessages.postMessage({list}); - // this.webWorkerSortMessages.onmessage = e => { - // console.log('e',e) + this.webWorkerSortMessages.onmessage = e => { + console.log('e',e) - // list = e.data - // res() + list = e.data + res() - // } - // }) + } + }) this.messagesRendered = { messages: list, @@ -3173,16 +3174,16 @@ class ChatPage extends LitElement { this.messagesRendered = { messages: [newMessage], - type: 'new', + type: 'newComingInAuto', } await this.getUpdateComplete() - viewElement.scrollTop = viewElement.scrollHeight + // viewElement.scrollTop = viewElement.scrollHeight } else if (this.isUserDown) { this.messagesRendered = { messages: [newMessage], - type: 'new', + type: 'newComingInAuto', } // Append the message and scroll to the bottom if user is down the page // this.messagesRendered = [...this.messagesRendered, newMessage] @@ -3193,7 +3194,7 @@ class ChatPage extends LitElement { this.messagesRendered = { messages: [newMessage], - type: 'new', + type: 'newComingInAuto', } await this.getUpdateComplete() @@ -4202,6 +4203,7 @@ class ChatPage extends LitElement { const _computePow = async (chatBytes, isForward) => { const difficulty = this.balance < 4 ? 18 : 8 + console.log({difficulty}) const path = window.parent.location.origin + '/memory-pow/memory-pow.wasm.full' let worker diff --git a/plugins/plugins/core/components/ChatScroller.js b/plugins/plugins/core/components/ChatScroller.js index dc614d95..9b7cce0d 100644 --- a/plugins/plugins/core/components/ChatScroller.js +++ b/plugins/plugins/core/components/ChatScroller.js @@ -29,6 +29,7 @@ import '@material/mwc-icon' import '@vaadin/icon' import '@vaadin/icons' import '@vaadin/tooltip' +import { chatLimit, totalMsgCount } from './ChatPage.js' const parentEpml = new Epml({ type: 'WINDOW', source: window.parent }) @@ -271,6 +272,7 @@ class ChatScroller extends LitElement { this.disableFetching = false this.isLoadingBefore = false this.isLoadingAfter = false + this.disableAddingNewMessages = false } addSeenMessage(val) { @@ -347,6 +349,7 @@ class ChatScroller extends LitElement { async addNewMessages(newMessages, type) { + if(this.disableAddingNewMessages && type === 'newComingInAuto') return let previousScrollTop; let previousScrollHeight; @@ -373,19 +376,22 @@ class ChatScroller extends LitElement { - // Ensure that the total number of individual messages doesn't exceed 80 + // Ensure that the total number of individual messages doesn't exceed totalMsgCount let totalMessagesCount = copy.reduce((acc, group) => acc + group.messages.length, 0); - while (totalMessagesCount > 80 && copy.length) { + while (totalMessagesCount > totalMsgCount && copy.length) { + if(newMessages.length < chatLimit && type !== 'newComingInAuto' && type !== 'initial'){ + this.disableAddingNewMessages = false + } const firstGroup = copy[0]; - if (firstGroup.messages.length <= (totalMessagesCount - 80)) { + if (firstGroup.messages.length <= (totalMessagesCount - totalMsgCount)) { // If removing the whole first group achieves the goal, remove it totalMessagesCount -= firstGroup.messages.length; copy.shift(); } else { // Otherwise, trim individual messages from the first group - const messagesToRemove = totalMessagesCount - 80; + const messagesToRemove = totalMessagesCount - totalMsgCount; firstGroup.messages.splice(0, messagesToRemove); - totalMessagesCount = 80; + totalMessagesCount = totalMsgCount; } } this.messagesToRender = copy @@ -436,27 +442,24 @@ class ChatScroller extends LitElement { this.messagesToRender.unshift(currentMessageGroup); } - // Ensure that the total number of individual messages doesn't exceed 80 + // Ensure that the total number of individual messages doesn't exceed totalMsgCount let totalMessagesCount = this.messagesToRender.reduce((acc, group) => acc + group.messages.length, 0); - while (totalMessagesCount > 80 && this.messagesToRender.length) { + while (totalMessagesCount > totalMsgCount && this.messagesToRender.length) { + this.disableAddingNewMessages = true const lastGroup = this.messagesToRender[this.messagesToRender.length - 1]; - if (lastGroup.messages.length <= (totalMessagesCount - 80)) { + if (lastGroup.messages.length <= (totalMessagesCount - totalMsgCount)) { // If removing the whole last group achieves the goal, remove it totalMessagesCount -= lastGroup.messages.length; this.messagesToRender.pop(); } else { // Otherwise, trim individual messages from the last group - const messagesToRemove = totalMessagesCount - 80; + const messagesToRemove = totalMessagesCount - totalMsgCount; lastGroup.messages.splice(-messagesToRemove, messagesToRemove); - totalMessagesCount = 80; + totalMessagesCount = totalMsgCount; } } this.clearLoaders() - this.requestUpdate(); // await new Promise((res)=> { - // setTimeout(()=> { - // res() - // }, 5000) - // }) + this.requestUpdate(); } @@ -548,9 +551,10 @@ class ChatScroller extends LitElement { if (this.messages.type === 'initial') { this.addNewMessages(this.messages.messages, 'initial') + - - } else if (this.messages.type === 'new') this.addNewMessages(this.messages.messages) + } else if (this.messages.type === 'new') this.addNewMessages(this.messages.messages) + else if(this.messages.type === 'newComingInAuto') this.addNewMessages(this.messages.messages, 'newComingInAuto') else if (this.messages.type === 'old') this.prependOldMessages(this.messages.messages) else if (this.messages.type === 'inBetween') this.newListMessages(this.messages.messages, this.messages.signature) else if (this.messages.type === 'update') this.replaceMessagesWithUpdateByArray(this.messages.messages)