forked from Qortal/qortal-ui
don't add new msg if passed max chat length
This commit is contained in:
parent
ad716b5286
commit
f8477c0307
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user