4
1
mirror of https://github.com/Qortal/qortal-ui.git synced 2025-02-15 03:35:51 +00:00

don't add new msg if passed max chat length

This commit is contained in:
PhilReact 2023-09-08 21:35:08 -05:00
parent ad716b5286
commit f8477c0307
2 changed files with 44 additions and 38 deletions

View File

@ -55,7 +55,8 @@ const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
export const queue = new RequestQueue(); export const queue = new RequestQueue();
export const chatLimit = 40 export const chatLimit = 10
export const totalMsgCount = 20
class ChatPage extends LitElement { class ChatPage extends LitElement {
static get properties() { static get properties() {
return { return {
@ -2748,18 +2749,18 @@ class ChatPage extends LitElement {
let list = [...decodeMsgs] 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 => { this.webWorkerSortMessages.onmessage = e => {
// console.log('e',e) console.log('e',e)
// list = e.data list = e.data
// res() res()
// } }
// }) })
this.messagesRendered = { this.messagesRendered = {
messages: list, messages: list,
@ -2811,18 +2812,18 @@ class ChatPage extends LitElement {
})); }));
let list = [...decodeMsgs] 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 => { this.webWorkerSortMessages.onmessage = e => {
// console.log('e',e) console.log('e',e)
// list = e.data list = e.data
// res() res()
// } }
// }) })
this.messagesRendered = { this.messagesRendered = {
messages: list, messages: list,
@ -3173,16 +3174,16 @@ class ChatPage extends LitElement {
this.messagesRendered = { this.messagesRendered = {
messages: [newMessage], messages: [newMessage],
type: 'new', type: 'newComingInAuto',
} }
await this.getUpdateComplete() await this.getUpdateComplete()
viewElement.scrollTop = viewElement.scrollHeight // viewElement.scrollTop = viewElement.scrollHeight
} else if (this.isUserDown) { } else if (this.isUserDown) {
this.messagesRendered = { this.messagesRendered = {
messages: [newMessage], messages: [newMessage],
type: 'new', type: 'newComingInAuto',
} }
// Append the message and scroll to the bottom if user is down the page // Append the message and scroll to the bottom if user is down the page
// this.messagesRendered = [...this.messagesRendered, newMessage] // this.messagesRendered = [...this.messagesRendered, newMessage]
@ -3193,7 +3194,7 @@ class ChatPage extends LitElement {
this.messagesRendered = { this.messagesRendered = {
messages: [newMessage], messages: [newMessage],
type: 'new', type: 'newComingInAuto',
} }
await this.getUpdateComplete() await this.getUpdateComplete()
@ -4202,6 +4203,7 @@ class ChatPage extends LitElement {
const _computePow = async (chatBytes, isForward) => { const _computePow = async (chatBytes, isForward) => {
const difficulty = this.balance < 4 ? 18 : 8 const difficulty = this.balance < 4 ? 18 : 8
console.log({difficulty})
const path = window.parent.location.origin + '/memory-pow/memory-pow.wasm.full' const path = window.parent.location.origin + '/memory-pow/memory-pow.wasm.full'
let worker let worker

View File

@ -29,6 +29,7 @@ import '@material/mwc-icon'
import '@vaadin/icon' import '@vaadin/icon'
import '@vaadin/icons' import '@vaadin/icons'
import '@vaadin/tooltip' import '@vaadin/tooltip'
import { chatLimit, totalMsgCount } from './ChatPage.js'
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent }) const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
@ -271,6 +272,7 @@ class ChatScroller extends LitElement {
this.disableFetching = false this.disableFetching = false
this.isLoadingBefore = false this.isLoadingBefore = false
this.isLoadingAfter = false this.isLoadingAfter = false
this.disableAddingNewMessages = false
} }
addSeenMessage(val) { addSeenMessage(val) {
@ -347,6 +349,7 @@ class ChatScroller extends LitElement {
async addNewMessages(newMessages, type) { async addNewMessages(newMessages, type) {
if(this.disableAddingNewMessages && type === 'newComingInAuto') return
let previousScrollTop; let previousScrollTop;
let previousScrollHeight; 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); 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]; 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 // If removing the whole first group achieves the goal, remove it
totalMessagesCount -= firstGroup.messages.length; totalMessagesCount -= firstGroup.messages.length;
copy.shift(); copy.shift();
} else { } else {
// Otherwise, trim individual messages from the first group // Otherwise, trim individual messages from the first group
const messagesToRemove = totalMessagesCount - 80; const messagesToRemove = totalMessagesCount - totalMsgCount;
firstGroup.messages.splice(0, messagesToRemove); firstGroup.messages.splice(0, messagesToRemove);
totalMessagesCount = 80; totalMessagesCount = totalMsgCount;
} }
} }
this.messagesToRender = copy this.messagesToRender = copy
@ -436,27 +442,24 @@ class ChatScroller extends LitElement {
this.messagesToRender.unshift(currentMessageGroup); 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); 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]; 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 // If removing the whole last group achieves the goal, remove it
totalMessagesCount -= lastGroup.messages.length; totalMessagesCount -= lastGroup.messages.length;
this.messagesToRender.pop(); this.messagesToRender.pop();
} else { } else {
// Otherwise, trim individual messages from the last group // Otherwise, trim individual messages from the last group
const messagesToRemove = totalMessagesCount - 80; const messagesToRemove = totalMessagesCount - totalMsgCount;
lastGroup.messages.splice(-messagesToRemove, messagesToRemove); lastGroup.messages.splice(-messagesToRemove, messagesToRemove);
totalMessagesCount = 80; totalMessagesCount = totalMsgCount;
} }
} }
this.clearLoaders() this.clearLoaders()
this.requestUpdate(); // await new Promise((res)=> { this.requestUpdate();
// setTimeout(()=> {
// res()
// }, 5000)
// })
} }
@ -551,6 +554,7 @@ class ChatScroller extends LitElement {
} 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 === '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 === 'inBetween') this.newListMessages(this.messages.messages, this.messages.signature)
else if (this.messages.type === 'update') this.replaceMessagesWithUpdateByArray(this.messages.messages) else if (this.messages.type === 'update') this.replaceMessagesWithUpdateByArray(this.messages.messages)