remove logs , imporve replace msgs efficiency

This commit is contained in:
PhilReact 2023-09-10 11:37:01 -05:00
parent 8dfab316a7
commit f5a9fe46c4
4 changed files with 73 additions and 192 deletions

View File

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

View File

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

View File

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

View File

@ -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;
}; };