mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-03-31 01:35:54 +00:00
remove logs , imporve replace msgs efficiency
This commit is contained in:
parent
8dfab316a7
commit
f5a9fe46c4
@ -55,8 +55,10 @@ 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 = 20
|
||||||
export const totalMsgCount = 120
|
export const chatLimitHalf = 10
|
||||||
|
|
||||||
|
export const totalMsgCount = 60
|
||||||
class ChatPage extends LitElement {
|
class ChatPage extends LitElement {
|
||||||
static get properties() {
|
static get properties() {
|
||||||
return {
|
return {
|
||||||
@ -2142,7 +2144,6 @@ class ChatPage extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async goToRepliedMessage(message, clickedOnMessage) {
|
async goToRepliedMessage(message, clickedOnMessage) {
|
||||||
console.log({message})
|
|
||||||
const findMessage = this.shadowRoot.querySelector('chat-scroller').shadowRoot.getElementById(message.signature)
|
const findMessage = this.shadowRoot.querySelector('chat-scroller').shadowRoot.getElementById(message.signature)
|
||||||
|
|
||||||
if (findMessage) {
|
if (findMessage) {
|
||||||
@ -2173,9 +2174,7 @@ class ChatPage extends LitElement {
|
|||||||
await this.getUpdateComplete()
|
await this.getUpdateComplete()
|
||||||
|
|
||||||
const marginElements = Array.from(this.shadowRoot.querySelector('chat-scroller').shadowRoot.querySelectorAll('message-template'))
|
const marginElements = Array.from(this.shadowRoot.querySelector('chat-scroller').shadowRoot.querySelectorAll('message-template'))
|
||||||
console.log({marginElements})
|
|
||||||
const findMessage2 = marginElements.find((item) => item.messageObj.signature === message.signature) || marginElements.find((item) => item.messageObj.originalSignature === message.signature) || marginElements.find((item) => item.messageObj.signature === message.originalSignature) || marginElements.find((item) => item.messageObj.originalSignature === message.originalSignature)
|
const findMessage2 = marginElements.find((item) => item.messageObj.signature === message.signature) || marginElements.find((item) => item.messageObj.originalSignature === message.signature) || marginElements.find((item) => item.messageObj.signature === message.originalSignature) || marginElements.find((item) => item.messageObj.originalSignature === message.originalSignature)
|
||||||
console.log({findMessage2}, message.signature)
|
|
||||||
if (findMessage2) {
|
if (findMessage2) {
|
||||||
findMessage2.scrollIntoView({ block: 'center' })
|
findMessage2.scrollIntoView({ block: 'center' })
|
||||||
}
|
}
|
||||||
@ -2410,26 +2409,9 @@ class ChatPage extends LitElement {
|
|||||||
document.querySelector('html').setAttribute('theme', this.theme)
|
document.querySelector('html').setAttribute('theme', this.theme)
|
||||||
})
|
})
|
||||||
|
|
||||||
// parentEpml.ready().then(() => {
|
|
||||||
// parentEpml.subscribe('selected_address', async selectedAddress => {
|
|
||||||
// this.selectedAddress = {}
|
|
||||||
// selectedAddress = JSON.parse(selectedAddress)
|
|
||||||
// if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
|
||||||
// this.selectedAddress = selectedAddress
|
|
||||||
// })
|
|
||||||
|
|
||||||
// })
|
|
||||||
this.lastReadMessageTimestamp = await chatLastSeen.getItem(this.chatId) || 0
|
this.lastReadMessageTimestamp = await chatLastSeen.getItem(this.chatId) || 0
|
||||||
// parentEpml.subscribe('chat_last_seen', async chatList => {
|
|
||||||
// const parsedChatList = JSON.parse(chatList)
|
|
||||||
// console.log({parsedChatList}, this.chatId)
|
|
||||||
// const findChatSeen = parsedChatList.find(chat=> chat.key === this.chatId)
|
|
||||||
// console.log({findChatSeen})
|
|
||||||
// if(findChatSeen && this.lastReadMessageTimestamp !== findChatSeen.timestamp){
|
|
||||||
// this.lastReadMessageTimestamp = findChatSeen.timestamp
|
|
||||||
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
parentEpml.imReady()
|
parentEpml.imReady()
|
||||||
|
|
||||||
const isEnabledChatEnter = localStorage.getItem('isEnabledChatEnter')
|
const isEnabledChatEnter = localStorage.getItem('isEnabledChatEnter')
|
||||||
@ -2528,7 +2510,6 @@ class ChatPage extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderChatScroller() {
|
renderChatScroller() {
|
||||||
console.log('clearUpdateMessageHashmap', Object.keys(this.updateMessageHash).length)
|
|
||||||
return html`
|
return html`
|
||||||
<chat-scroller
|
<chat-scroller
|
||||||
chatId=${this.chatId}
|
chatId=${this.chatId}
|
||||||
@ -2623,7 +2604,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
this.webWorkerDecodeMessages.onerror = e => {
|
this.webWorkerDecodeMessages.onerror = e => {
|
||||||
console.log('e',e)
|
|
||||||
rej()
|
rej()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2639,7 +2619,6 @@ class ChatPage extends LitElement {
|
|||||||
addToUpdateMessageHashmap: this.addToUpdateMessageHashmap
|
addToUpdateMessageHashmap: this.addToUpdateMessageHashmap
|
||||||
}));
|
}));
|
||||||
|
|
||||||
console.log({decodeMsgs})
|
|
||||||
|
|
||||||
let list = [...decodeMsgs]
|
let list = [...decodeMsgs]
|
||||||
|
|
||||||
@ -2648,7 +2627,6 @@ class ChatPage extends LitElement {
|
|||||||
this.webWorkerSortMessages.postMessage({list});
|
this.webWorkerSortMessages.postMessage({list});
|
||||||
|
|
||||||
this.webWorkerSortMessages.onmessage = e => {
|
this.webWorkerSortMessages.onmessage = e => {
|
||||||
console.log('e',e)
|
|
||||||
|
|
||||||
list = e.data
|
list = e.data
|
||||||
res()
|
res()
|
||||||
@ -2685,7 +2663,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
this.webWorkerDecodeMessages.onerror = e => {
|
this.webWorkerDecodeMessages.onerror = e => {
|
||||||
console.log('e',e)
|
|
||||||
rej()
|
rej()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2700,7 +2677,6 @@ class ChatPage extends LitElement {
|
|||||||
addToUpdateMessageHashmap: this.addToUpdateMessageHashmap
|
addToUpdateMessageHashmap: this.addToUpdateMessageHashmap
|
||||||
}));
|
}));
|
||||||
|
|
||||||
console.log({decodeMsgs})
|
|
||||||
|
|
||||||
let list = [...decodeMsgs]
|
let list = [...decodeMsgs]
|
||||||
|
|
||||||
@ -2709,7 +2685,6 @@ class ChatPage extends LitElement {
|
|||||||
this.webWorkerSortMessages.postMessage({list});
|
this.webWorkerSortMessages.postMessage({list});
|
||||||
|
|
||||||
this.webWorkerSortMessages.onmessage = e => {
|
this.webWorkerSortMessages.onmessage = e => {
|
||||||
console.log('e',e)
|
|
||||||
|
|
||||||
list = e.data
|
list = e.data
|
||||||
res()
|
res()
|
||||||
@ -2745,7 +2720,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
this.webWorkerDecodeMessages.onerror = e => {
|
this.webWorkerDecodeMessages.onerror = e => {
|
||||||
console.log('e',e)
|
|
||||||
rej()
|
rej()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2767,7 +2741,6 @@ class ChatPage extends LitElement {
|
|||||||
this.webWorkerSortMessages.postMessage({list});
|
this.webWorkerSortMessages.postMessage({list});
|
||||||
|
|
||||||
this.webWorkerSortMessages.onmessage = e => {
|
this.webWorkerSortMessages.onmessage = e => {
|
||||||
console.log('e',e)
|
|
||||||
|
|
||||||
list = e.data
|
list = e.data
|
||||||
res()
|
res()
|
||||||
@ -2808,7 +2781,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
this.webWorkerDecodeMessages.onerror = e => {
|
this.webWorkerDecodeMessages.onerror = e => {
|
||||||
console.log('e',e)
|
|
||||||
rej()
|
rej()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2830,7 +2802,6 @@ class ChatPage extends LitElement {
|
|||||||
this.webWorkerSortMessages.postMessage({list});
|
this.webWorkerSortMessages.postMessage({list});
|
||||||
|
|
||||||
this.webWorkerSortMessages.onmessage = e => {
|
this.webWorkerSortMessages.onmessage = e => {
|
||||||
console.log('e',e)
|
|
||||||
|
|
||||||
list = e.data
|
list = e.data
|
||||||
res()
|
res()
|
||||||
@ -2872,7 +2843,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
this.webWorkerDecodeMessages.onerror = e => {
|
this.webWorkerDecodeMessages.onerror = e => {
|
||||||
console.log('e',e)
|
|
||||||
rej()
|
rej()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2895,7 +2865,6 @@ class ChatPage extends LitElement {
|
|||||||
this.webWorkerSortMessages.postMessage({list});
|
this.webWorkerSortMessages.postMessage({list});
|
||||||
|
|
||||||
this.webWorkerSortMessages.onmessage = e => {
|
this.webWorkerSortMessages.onmessage = e => {
|
||||||
console.log('e',e)
|
|
||||||
|
|
||||||
list = e.data
|
list = e.data
|
||||||
res()
|
res()
|
||||||
@ -2933,7 +2902,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
this.webWorkerDecodeMessages.onerror = e => {
|
this.webWorkerDecodeMessages.onerror = e => {
|
||||||
console.log('e',e)
|
|
||||||
rej()
|
rej()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2958,7 +2926,6 @@ class ChatPage extends LitElement {
|
|||||||
this.webWorkerSortMessages.postMessage({list});
|
this.webWorkerSortMessages.postMessage({list});
|
||||||
|
|
||||||
this.webWorkerSortMessages.onmessage = e => {
|
this.webWorkerSortMessages.onmessage = e => {
|
||||||
console.log('e',e)
|
|
||||||
|
|
||||||
list = e.data
|
list = e.data
|
||||||
res()
|
res()
|
||||||
@ -3002,7 +2969,6 @@ class ChatPage extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async clearUpdateMessageHashmap(){
|
async clearUpdateMessageHashmap(){
|
||||||
console.log('hello clear')
|
|
||||||
this.updateMessageHash = {}
|
this.updateMessageHash = {}
|
||||||
this.requestUpdate()
|
this.requestUpdate()
|
||||||
}
|
}
|
||||||
@ -3046,7 +3012,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
this.webWorkerDecodeMessages.onerror = e => {
|
this.webWorkerDecodeMessages.onerror = e => {
|
||||||
console.log('e',e)
|
|
||||||
rej()
|
rej()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -3078,7 +3043,6 @@ class ChatPage extends LitElement {
|
|||||||
this.webWorkerSortMessages.postMessage({list});
|
this.webWorkerSortMessages.postMessage({list});
|
||||||
|
|
||||||
this.webWorkerSortMessages.onmessage = e => {
|
this.webWorkerSortMessages.onmessage = e => {
|
||||||
console.log('e',e)
|
|
||||||
|
|
||||||
list = e.data
|
list = e.data
|
||||||
res()
|
res()
|
||||||
@ -3141,23 +3105,6 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// let list = [...this.messagesRendered]
|
|
||||||
|
|
||||||
// await new Promise((res, rej) => {
|
|
||||||
|
|
||||||
// this.webWorkerSortMessages.postMessage({list});
|
|
||||||
|
|
||||||
// this.webWorkerSortMessages.onmessage = e => {
|
|
||||||
// console.log('e',e)
|
|
||||||
|
|
||||||
// list = e.data
|
|
||||||
// res()
|
|
||||||
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
|
|
||||||
// this.messagesRendered = list
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3329,27 +3276,24 @@ class ChatPage extends LitElement {
|
|||||||
let isUnread = false
|
let isUnread = false
|
||||||
|
|
||||||
const chatId = this.chatId
|
const chatId = this.chatId
|
||||||
console.log('this.chatHeads', this.chatHeads)
|
|
||||||
const findContent = this.chatHeads.find((item)=> item.url === chatId)
|
const findContent = this.chatHeads.find((item)=> item.url === chatId)
|
||||||
const chatInfoTimestamp = findContent.timestamp || 0
|
const chatInfoTimestamp = findContent.timestamp || 0
|
||||||
const lastReadMessageTimestamp = this.lastReadMessageTimestamp
|
const lastReadMessageTimestamp = this.lastReadMessageTimestamp
|
||||||
|
|
||||||
console.log({lastReadMessageTimestamp, chatInfoTimestamp})
|
|
||||||
|
|
||||||
if(lastReadMessageTimestamp && chatInfoTimestamp){
|
if(lastReadMessageTimestamp && chatInfoTimestamp){
|
||||||
if(lastReadMessageTimestamp < chatInfoTimestamp){
|
if(lastReadMessageTimestamp < chatInfoTimestamp){
|
||||||
isUnread = true
|
isUnread = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log({isUnread})
|
|
||||||
if(isUnread){
|
if(isUnread){
|
||||||
const getInitialMessagesBefore = await parentEpml.request('apiCall', {
|
const getInitialMessagesBefore = await parentEpml.request('apiCall', {
|
||||||
type: 'api',
|
type: 'api',
|
||||||
url: `/chat/messages?involving=${window.parent.reduxStore.getState().app.selectedAddress.address}&involving=${cid}&limit=${20}&reverse=true&before=${lastReadMessageTimestamp}&haschatreference=false&encoding=BASE64`
|
url: `/chat/messages?involving=${window.parent.reduxStore.getState().app.selectedAddress.address}&involving=${cid}&limit=${chatLimitHalf}&reverse=true&before=${lastReadMessageTimestamp}&haschatreference=false&encoding=BASE64`
|
||||||
})
|
})
|
||||||
const getInitialMessagesAfter = await parentEpml.request('apiCall', {
|
const getInitialMessagesAfter = await parentEpml.request('apiCall', {
|
||||||
type: 'api',
|
type: 'api',
|
||||||
url: `/chat/messages?involving=${window.parent.reduxStore.getState().app.selectedAddress.address}&involving=${cid}&limit=${20}&reverse=false&after=${lastReadMessageTimestamp - 1000}&haschatreference=false&encoding=BASE64`
|
url: `/chat/messages?involving=${window.parent.reduxStore.getState().app.selectedAddress.address}&involving=${cid}&limit=${chatLimitHalf}&reverse=false&after=${lastReadMessageTimestamp - 1000}&haschatreference=false&encoding=BASE64`
|
||||||
})
|
})
|
||||||
getInitialMessages = [...getInitialMessagesBefore, ...getInitialMessagesAfter]
|
getInitialMessages = [...getInitialMessagesBefore, ...getInitialMessagesAfter]
|
||||||
} else {
|
} else {
|
||||||
@ -3450,27 +3394,24 @@ class ChatPage extends LitElement {
|
|||||||
let isUnread = false
|
let isUnread = false
|
||||||
|
|
||||||
const chatId = this.chatId
|
const chatId = this.chatId
|
||||||
console.log('this.chatHeads', this.chatHeads)
|
|
||||||
const findContent = this.chatHeads.find((item)=> item.url === chatId)
|
const findContent = this.chatHeads.find((item)=> item.url === chatId)
|
||||||
const chatInfoTimestamp = findContent.timestamp || 0
|
const chatInfoTimestamp = findContent.timestamp || 0
|
||||||
console.log({lastReadMessageTimestamp, chatInfoTimestamp})
|
|
||||||
|
|
||||||
if(lastReadMessageTimestamp && chatInfoTimestamp){
|
if(lastReadMessageTimestamp && chatInfoTimestamp){
|
||||||
if(lastReadMessageTimestamp < chatInfoTimestamp){
|
if(lastReadMessageTimestamp < chatInfoTimestamp){
|
||||||
isUnread = true
|
isUnread = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log({isUnread}, '2')
|
|
||||||
if(isUnread){
|
if(isUnread){
|
||||||
|
|
||||||
|
|
||||||
const getInitialMessagesBefore = await parentEpml.request('apiCall', {
|
const getInitialMessagesBefore = await parentEpml.request('apiCall', {
|
||||||
type: 'api',
|
type: 'api',
|
||||||
url: `/chat/messages?txGroupId=${groupId}&limit=${20}&reverse=true&before=${lastReadMessageTimestamp}&haschatreference=false&encoding=BASE64`
|
url: `/chat/messages?txGroupId=${groupId}&limit=${chatLimitHalf}&reverse=true&before=${lastReadMessageTimestamp}&haschatreference=false&encoding=BASE64`
|
||||||
})
|
})
|
||||||
const getInitialMessagesAfter = await parentEpml.request('apiCall', {
|
const getInitialMessagesAfter = await parentEpml.request('apiCall', {
|
||||||
type: 'api',
|
type: 'api',
|
||||||
url: `/chat/messages?txGroupId=${groupId}&limit=${20}&reverse=false&after=${lastReadMessageTimestamp - 1000}&haschatreference=false&encoding=BASE64`
|
url: `/chat/messages?txGroupId=${groupId}&limit=${chatLimitHalf}&reverse=false&after=${lastReadMessageTimestamp - 1000}&haschatreference=false&encoding=BASE64`
|
||||||
})
|
})
|
||||||
getInitialMessages = [...getInitialMessagesBefore, ...getInitialMessagesAfter]
|
getInitialMessages = [...getInitialMessagesBefore, ...getInitialMessagesAfter]
|
||||||
} else {
|
} else {
|
||||||
@ -4295,7 +4236,6 @@ 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
|
||||||
|
@ -320,7 +320,6 @@ class ChatScroller extends LitElement {
|
|||||||
|
|
||||||
async newListMessages(newMessages, message) {
|
async newListMessages(newMessages, message) {
|
||||||
|
|
||||||
console.log('sup')
|
|
||||||
let data = []
|
let data = []
|
||||||
const copy = [...newMessages]
|
const copy = [...newMessages]
|
||||||
copy.forEach(newMessage => {
|
copy.forEach(newMessage => {
|
||||||
@ -337,7 +336,6 @@ class ChatScroller extends LitElement {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
console.log({data})
|
|
||||||
this.messagesToRender = data
|
this.messagesToRender = data
|
||||||
this.clearLoaders()
|
this.clearLoaders()
|
||||||
this.requestUpdate()
|
this.requestUpdate()
|
||||||
@ -355,7 +353,6 @@ class ChatScroller extends LitElement {
|
|||||||
async newListMessagesUnreadMessages(newMessages, message, lastReadMessageTimestamp) {
|
async newListMessagesUnreadMessages(newMessages, message, lastReadMessageTimestamp) {
|
||||||
const viewElement = this.shadowRoot.querySelector("#viewElement");
|
const viewElement = this.shadowRoot.querySelector("#viewElement");
|
||||||
|
|
||||||
console.log('sup', lastReadMessageTimestamp);
|
|
||||||
let data = [];
|
let data = [];
|
||||||
const copy = [...newMessages];
|
const copy = [...newMessages];
|
||||||
|
|
||||||
@ -370,7 +367,6 @@ class ChatScroller extends LitElement {
|
|||||||
|
|
||||||
// Check if this is the message before which the divider should be placed
|
// Check if this is the message before which the divider should be placed
|
||||||
if (!dividerPlaced && newMessage.timestamp <= lastReadMessageTimestamp) {
|
if (!dividerPlaced && newMessage.timestamp <= lastReadMessageTimestamp) {
|
||||||
console.log('true true')
|
|
||||||
newMessage.isDivider = true;
|
newMessage.isDivider = true;
|
||||||
dividerPlaced = true; // Ensure the divider is only added once
|
dividerPlaced = true; // Ensure the divider is only added once
|
||||||
break; // Exit once the divider is placed
|
break; // Exit once the divider is placed
|
||||||
@ -390,7 +386,6 @@ class ChatScroller extends LitElement {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log({ data });
|
|
||||||
this.messagesToRender = data;
|
this.messagesToRender = data;
|
||||||
this.clearLoaders();
|
this.clearLoaders();
|
||||||
this.requestUpdate();
|
this.requestUpdate();
|
||||||
@ -415,7 +410,6 @@ class ChatScroller extends LitElement {
|
|||||||
previousScrollHeight = viewElement.scrollHeight;
|
previousScrollHeight = viewElement.scrollHeight;
|
||||||
|
|
||||||
|
|
||||||
console.log('sup', type);
|
|
||||||
const copy = [...this.messagesToRender]
|
const copy = [...this.messagesToRender]
|
||||||
|
|
||||||
for (const newMessage of newMessages) {
|
for (const newMessage of newMessages) {
|
||||||
@ -453,9 +447,7 @@ class ChatScroller extends LitElement {
|
|||||||
}
|
}
|
||||||
this.messagesToRender = copy
|
this.messagesToRender = copy
|
||||||
this.requestUpdate();
|
this.requestUpdate();
|
||||||
console.log("Before waiting for updateComplete");
|
|
||||||
await this.updateComplete;
|
await this.updateComplete;
|
||||||
console.log("After waiting for updateComplete");
|
|
||||||
|
|
||||||
if (type === 'initial') {
|
if (type === 'initial') {
|
||||||
|
|
||||||
@ -469,7 +461,6 @@ class ChatScroller extends LitElement {
|
|||||||
|
|
||||||
|
|
||||||
async prependOldMessages(oldMessages) {
|
async prependOldMessages(oldMessages) {
|
||||||
console.log('2', { oldMessages });
|
|
||||||
if (!this.messagesToRender) this.messagesToRender = []; // Ensure it's initialized
|
if (!this.messagesToRender) this.messagesToRender = []; // Ensure it's initialized
|
||||||
|
|
||||||
let currentMessageGroup = null;
|
let currentMessageGroup = null;
|
||||||
@ -546,22 +537,9 @@ class ChatScroller extends LitElement {
|
|||||||
|
|
||||||
this.messagesToRender = newMessagesToRender;
|
this.messagesToRender = newMessagesToRender;
|
||||||
this.requestUpdate();
|
this.requestUpdate();
|
||||||
console.log('await this.updateComplete 1')
|
|
||||||
await this.updateComplete;
|
await this.updateComplete;
|
||||||
console.log('await this.updateComplete 2')
|
|
||||||
|
|
||||||
// Adjust scroll position based on the difference in scroll heights
|
|
||||||
// await new Promise((res)=> {
|
|
||||||
// setTimeout(()=> {
|
|
||||||
// res()
|
|
||||||
// }, 5000)
|
|
||||||
// })
|
|
||||||
// const newScrollHeight = viewElement.scrollHeight;
|
|
||||||
// viewElement.scrollTop = previousScrollTop + (newScrollHeight - previousScrollHeight);
|
|
||||||
// viewElement.scrollTop = viewElement.scrollHeight - viewElement.clientHeight;
|
|
||||||
// const newScrollHeight = viewElement.scrollHeight;
|
|
||||||
// viewElement.scrollTop = viewElement.scrollTop + (newScrollHeight - viewElement.scrollHeight);
|
|
||||||
// If the user was at the bottom before the update, keep them at the bottom
|
|
||||||
if (isUserAtBottom) {
|
if (isUserAtBottom) {
|
||||||
viewElement.scrollTop = viewElement.scrollHeight - viewElement.clientHeight;
|
viewElement.scrollTop = viewElement.scrollHeight - viewElement.clientHeight;
|
||||||
} else {
|
} else {
|
||||||
@ -583,7 +561,6 @@ class ChatScroller extends LitElement {
|
|||||||
const viewElement = this.shadowRoot.querySelector("#viewElement");
|
const viewElement = this.shadowRoot.querySelector("#viewElement");
|
||||||
previousScrollTop = viewElement.scrollTop;
|
previousScrollTop = viewElement.scrollTop;
|
||||||
previousScrollHeight = viewElement.scrollHeight;
|
previousScrollHeight = viewElement.scrollHeight;
|
||||||
console.log({updatedMessagesArray}, this.messagesToRender)
|
|
||||||
for (let group of this.messagesToRender) {
|
for (let group of this.messagesToRender) {
|
||||||
for (let i = 0; i < group.messages.length; i++) {
|
for (let i = 0; i < group.messages.length; i++) {
|
||||||
const update = updatedMessagesArray.find(updatedMessage => ((updatedMessage.chatReference === group.messages[i].signature) || (updatedMessage.chatReference === group.messages[i].originalSignature)));
|
const update = updatedMessagesArray.find(updatedMessage => ((updatedMessage.chatReference === group.messages[i].signature) || (updatedMessage.chatReference === group.messages[i].originalSignature)));
|
||||||
@ -604,7 +581,6 @@ class ChatScroller extends LitElement {
|
|||||||
|
|
||||||
async updated(changedProperties) {
|
async updated(changedProperties) {
|
||||||
if (changedProperties && changedProperties.has('messages')) {
|
if (changedProperties && changedProperties.has('messages')) {
|
||||||
console.log({changedProperties}, this.messages)
|
|
||||||
if (this.messages.type === 'initial') {
|
if (this.messages.type === 'initial') {
|
||||||
this.addNewMessages(this.messages.messages, 'initial')
|
this.addNewMessages(this.messages.messages, 'initial')
|
||||||
|
|
||||||
@ -738,7 +714,6 @@ class ChatScroller extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
shouldUpdate(changedProperties) {
|
shouldUpdate(changedProperties) {
|
||||||
console.log({changedProperties})
|
|
||||||
if (changedProperties.has('isLoadingMessages')) {
|
if (changedProperties.has('isLoadingMessages')) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@ -758,7 +733,6 @@ class ChatScroller extends LitElement {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if(changedProperties.has('messagesToRender')){
|
if(changedProperties.has('messagesToRender')){
|
||||||
console.log('true', this.messagesToRender)
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if(changedProperties.has('isLoadingBefore')){
|
if(changedProperties.has('isLoadingBefore')){
|
||||||
@ -774,7 +748,6 @@ class ChatScroller extends LitElement {
|
|||||||
async getUpdateComplete() {
|
async getUpdateComplete() {
|
||||||
await super.getUpdateComplete()
|
await super.getUpdateComplete()
|
||||||
const marginElements = Array.from(this.shadowRoot.querySelectorAll('message-template'))
|
const marginElements = Array.from(this.shadowRoot.querySelectorAll('message-template'))
|
||||||
console.log({ marginElements })
|
|
||||||
await Promise.all(marginElements.map(el => el.updateComplete))
|
await Promise.all(marginElements.map(el => el.updateComplete))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -179,7 +179,6 @@ class Chat extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
console.log('q-chat')
|
|
||||||
return html`
|
return html`
|
||||||
<div class="container clearfix">
|
<div class="container clearfix">
|
||||||
<div class="people-list" id="people-list">
|
<div class="people-list" id="people-list">
|
||||||
@ -470,10 +469,7 @@ class Chat extends LitElement {
|
|||||||
}, 60000)
|
}, 60000)
|
||||||
}
|
}
|
||||||
|
|
||||||
async updated(changedProperties) {
|
|
||||||
console.log({changedProperties})
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
clearConsole() {
|
clearConsole() {
|
||||||
if (!isElectron()) {
|
if (!isElectron()) {
|
||||||
|
@ -155,125 +155,97 @@ export const replaceMessagesEdited = async ({
|
|||||||
return results;
|
return results;
|
||||||
};
|
};
|
||||||
|
|
||||||
const findNewMessages = async (msg) => {
|
const findUpdatedMessage = async (msg) => {
|
||||||
let msgItem = msg
|
let msgItem = { ...msg };
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
|
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`;
|
||||||
if (!isReceipient) {
|
if (!isReceipient) {
|
||||||
msgQuery = `&txGroupId=${msg.txGroupId}`
|
msgQuery = `&txGroupId=${msg.txGroupId}`;
|
||||||
}
|
}
|
||||||
const response = await parentEpml.request("apiCall", {
|
|
||||||
|
// Find new messages first
|
||||||
|
const newMsgResponse = await parentEpml.request("apiCall", {
|
||||||
type: "api",
|
type: "api",
|
||||||
url: `/chat/messages?chatreference=${msg.signature}&reverse=true${msgQuery}&limit=1&sender=${msg.sender}&encoding=BASE64`,
|
url: `/chat/messages?chatreference=${msg.signature}&reverse=true${msgQuery}&limit=1&sender=${msg.sender}&encoding=BASE64`,
|
||||||
})
|
});
|
||||||
|
|
||||||
if (response && Array.isArray(response) && response.length !== 0) {
|
if (Array.isArray(newMsgResponse) && newMsgResponse.length > 0) {
|
||||||
let responseItem = { ...response[0] }
|
const decodeResponseItem = decodeMessageFunc(newMsgResponse[0], isReceipient, _publicKey);
|
||||||
const decodeResponseItem = decodeMessageFunc(responseItem, isReceipient, _publicKey)
|
delete decodeResponseItem.timestamp;
|
||||||
delete decodeResponseItem.timestamp
|
|
||||||
|
|
||||||
msgItem = {
|
msgItem = {
|
||||||
...msg,
|
...msgItem,
|
||||||
...decodeResponseItem,
|
...decodeResponseItem,
|
||||||
senderName: msg.senderName,
|
senderName: msg.senderName,
|
||||||
sender: msg.sender,
|
sender: msg.sender,
|
||||||
editedTimestamp: response[0].timestamp,
|
editedTimestamp: newMsgResponse[0].timestamp,
|
||||||
originalSignature: msg.signature
|
originalSignature: msg.signature
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
} catch (error) {
|
|
||||||
}
|
|
||||||
|
|
||||||
return msgItem
|
// Then check and find replies in the same iteration
|
||||||
};
|
let parsedMessageObj;
|
||||||
|
try {
|
||||||
const findNewMessages2 = async (msg) => {
|
parsedMessageObj = JSON.parse(msg.decodedMessage);
|
||||||
let parsedMessageObj = msg
|
} catch (error) {
|
||||||
try {
|
// If parsing fails, return the msgItem as is
|
||||||
parsedMessageObj = JSON.parse(msg.decodedMessage)
|
return msgItem;
|
||||||
} catch (error) {
|
|
||||||
return msg
|
|
||||||
}
|
|
||||||
let msgItem = msg
|
|
||||||
try {
|
|
||||||
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
|
|
||||||
if (!isReceipient) {
|
|
||||||
msgQuery = `&txGroupId=${msg.txGroupId}`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parsedMessageObj.repliedTo) {
|
if (parsedMessageObj.repliedTo) {
|
||||||
let originalReply
|
let originalReply;
|
||||||
if(+parsedMessageObj.version > 2){
|
if(+parsedMessageObj.version > 2){
|
||||||
originalReply = await parentEpml.request("apiCall", {
|
originalReply = await parentEpml.request("apiCall", {
|
||||||
type: "api",
|
type: "api",
|
||||||
url: `/chat/message/${parsedMessageObj.repliedTo}?encoding=BASE64`,
|
url: `/chat/message/${parsedMessageObj.repliedTo}?encoding=BASE64`,
|
||||||
})
|
});
|
||||||
}
|
} else {
|
||||||
if(+parsedMessageObj.version < 3){
|
|
||||||
originalReply = await parentEpml.request("apiCall", {
|
originalReply = await parentEpml.request("apiCall", {
|
||||||
type: "api",
|
type: "api",
|
||||||
url: `/chat/messages?reference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}&encoding=BASE64`,
|
url: `/chat/messages?reference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}&encoding=BASE64`,
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const originalReplyMessage = originalReply.timestamp ? originalReply : originalReply.length > 0 ? originalReply[0] : null;
|
||||||
|
|
||||||
|
const replyResponse = await parentEpml.request("apiCall", {
|
||||||
|
|
||||||
const originalReplyMessage = originalReply.timestamp ? originalReply : originalReply.length !== 0 ? originalReply[0] : null
|
|
||||||
|
|
||||||
const response = await parentEpml.request("apiCall", {
|
|
||||||
type: "api",
|
type: "api",
|
||||||
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}&limit=1&sender=${originalReplyMessage.sender}&encoding=BASE64`,
|
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}&limit=1&sender=${originalReplyMessage.sender}&encoding=BASE64`,
|
||||||
})
|
});
|
||||||
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
originalReplyMessage &&
|
originalReplyMessage &&
|
||||||
response &&
|
Array.isArray(replyResponse) &&
|
||||||
Array.isArray(response) &&
|
replyResponse.length !== 0
|
||||||
response.length !== 0
|
|
||||||
) {
|
) {
|
||||||
const decodeOriginalReply = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey)
|
const decodeOriginalReply = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey);
|
||||||
|
const decodeUpdatedReply = decodeMessageFunc(replyResponse[0], isReceipient, _publicKey);
|
||||||
|
|
||||||
const decodeUpdatedReply = decodeMessageFunc(response[0], isReceipient, _publicKey)
|
msgItem.repliedToData = {
|
||||||
const formattedRepliedToData = {
|
|
||||||
...decodeUpdatedReply,
|
...decodeUpdatedReply,
|
||||||
senderName: decodeOriginalReply.senderName,
|
senderName: decodeOriginalReply.senderName,
|
||||||
sender: decodeOriginalReply.sender,
|
sender: decodeOriginalReply.sender,
|
||||||
}
|
};
|
||||||
msgItem = {
|
} else if (originalReplyMessage) {
|
||||||
...msg,
|
msgItem.repliedToData = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey);
|
||||||
repliedToData: formattedRepliedToData,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
|
|
||||||
if (
|
|
||||||
originalReplyMessage
|
|
||||||
) {
|
|
||||||
msgItem = {
|
|
||||||
...msg,
|
|
||||||
repliedToData: decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// Handle or log the error gracefully
|
||||||
|
console.error(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return msgItem;
|
||||||
return msgItem
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const sortedMessages = decodedMessages.sort((a, b) => b.timestamp - a.timestamp);
|
const sortedMessages = decodedMessages.sort((a, b) => b.timestamp - a.timestamp);
|
||||||
|
|
||||||
// Execute the functions with concurrency limit
|
// Execute the functions with concurrency limit
|
||||||
const updateMessages = await executeWithConcurrencyLimit(sortedMessages, findNewMessages);
|
const updatedMessages = await executeWithConcurrencyLimit(sortedMessages, findUpdatedMessage);
|
||||||
const updateMessages2 = await executeWithConcurrencyLimit(updateMessages.filter(item => item !== 'null' && item !== null), findNewMessages2);
|
addToUpdateMessageHashmap(updatedMessages);
|
||||||
|
|
||||||
addToUpdateMessageHashmap(updateMessages2)
|
return updatedMessages;
|
||||||
|
|
||||||
|
|
||||||
return updateMessages2;
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user