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 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

View File

@ -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)