Browse Source

refactor newMessage and initial

q-apps
Phillip Lang Martinez 2 years ago
parent
commit
ce7eb44197
  1. 262
      qortal-ui-plugins/plugins/core/components/ChatPage.js

262
qortal-ui-plugins/plugins/core/components/ChatPage.js

@ -456,14 +456,14 @@ class ChatPage extends LitElement {
}) })
const updateMessages2 = await replaceMessagesEdited({ const replacedMessages = await replaceMessagesEdited({
decodedMessages: decodeMsgs, decodedMessages: decodeMsgs,
parentEpml, parentEpml,
isReceipient: this.isReceipient, isReceipient: this.isReceipient,
decodeMessageFunc: this.decodeMessage, decodeMessageFunc: this.decodeMessage,
_publicKey: this._publicKey _publicKey: this._publicKey
}) })
this.messagesRendered = [...updateMessages2, ...this.messagesRendered].sort(function (a, b) { this.messagesRendered = [...replacedMessages, ...this.messagesRendered].sort(function (a, b) {
return a.timestamp return a.timestamp
- b.timestamp - b.timestamp
}) })
@ -479,100 +479,18 @@ class ChatPage extends LitElement {
const decodeMsgs = getInitialMessages.map((eachMessage) => { const decodeMsgs = getInitialMessages.map((eachMessage) => {
return this.decodeMessage(eachMessage) return this.decodeMessage(eachMessage)
}) })
const findNewMessages = decodeMsgs.map(async(msg)=> { const replacedMessages = await replaceMessagesEdited({
decodedMessages: decodeMsgs,
let msgItem = msg parentEpml,
try { isReceipient: this.isReceipient,
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}` decodeMessageFunc: this.decodeMessage,
if(!this.isReceipient){ _publicKey: this._publicKey
msgQuery = `&txGroupId=${msg.txGroupId}`
}
const response = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?chatreference=${msg.reference}&reverse=true${msgQuery}`,
});
if(response && Array.isArray(response) && response.length !== 0){
let responseItem = {...response[0]}
delete responseItem.timestamp
msgItem = {
...msg,
...responseItem,
editedTimestamp : response[0].timestamp
}
}
} catch (error) {
console.log(error)
}
return msgItem
}) })
const updateMessages = await Promise.all(findNewMessages)
const findNewMessages2 = updateMessages.map(async(msg)=> {
let parsedMessageObj = msg
try {
parsedMessageObj = JSON.parse(msg.decodedMessage)
} catch (error) {
return msg
}
let msgItem = msg
try {
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
if(!this.isReceipient){
msgQuery = `&txGroupId=${msg.txGroupId}`
}
if(parsedMessageObj.repliedTo){
const response = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
});
if(response && Array.isArray(response) && response.length !== 0){
msgItem = { this.messagesRendered = [...replacedMessages, ...this.messagesRendered].sort(function (a, b) {
...msg,
repliedToData : this.decodeMessage(response[0])
}
} else {
const response2 = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?reference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
});
if(response2 && Array.isArray(response2) && response2.length !== 0){
msgItem = {
...msg,
repliedToData : this.decodeMessage(response2[0])
}
}
}
}
} catch (error) {
console.log(error)
}
return msgItem
})
const updateMessages2 = await Promise.all(findNewMessages2)
this.messagesRendered = [...updateMessages2, ...this.messagesRendered].sort(function (a, b) {
return a.timestamp return a.timestamp
- b.timestamp - b.timestamp
}) })
@ -586,40 +504,7 @@ class ChatPage extends LitElement {
async processMessages(messages, isInitial) { async processMessages(messages, isInitial) {
const isReceipient = this.chatId.includes('direct') const isReceipient = this.chatId.includes('direct')
const findNewMessages = messages.map(async(msg)=> { const decodedMessages = messages.map((eachMessage) => {
let msgItem = msg
try {
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
if(!isReceipient){
msgQuery = `&txGroupId=${msg.txGroupId}`
}
const response = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?chatreference=${msg.reference}&reverse=true${msgQuery}`,
});
if(response && Array.isArray(response) && response.length !== 0){
let responseItem = {...response[0]}
delete responseItem.timestamp
msgItem = {
...msg,
...responseItem,
editedTimestamp : response[0].timestamp
}
}
} catch (error) {
console.log(error)
}
return msgItem
})
const updateMessages = await Promise.all(findNewMessages)
if (isInitial) {
const decodedMessages = updateMessages.map((eachMessage) => {
if (eachMessage.isText === true) { if (eachMessage.isText === true) {
this.messageSignature = eachMessage.signature this.messageSignature = eachMessage.signature
@ -632,65 +517,19 @@ class ChatPage extends LitElement {
} }
}) })
if (isInitial) {
const findNewMessages2 = decodedMessages.map(async(msg)=> {
let parsedMessageObj = msg
try {
parsedMessageObj = JSON.parse(msg.decodedMessage)
} 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){
const response = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
});
if(response && Array.isArray(response) && response.length !== 0){
msgItem = {
...msg,
repliedToData : this.decodeMessage(response[0])
}
} else {
const response2 = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?reference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
});
if(response2 && Array.isArray(response2) && response2.length !== 0){
msgItem = {
...msg,
repliedToData : this.decodeMessage(response2[0])
}
}
}
}
} catch (error) {
console.log(error)
}
return msgItem const replacedMessages = await replaceMessagesEdited({
decodedMessages: decodedMessages,
parentEpml,
isReceipient: isReceipient,
decodeMessageFunc: this.decodeMessage,
_publicKey: this._publicKey
}) })
const updateMessages2 = await Promise.all(findNewMessages2)
this._messages = replacedMessages.sort(function (a, b) {
this._messages = updateMessages2.sort(function (a, b) {
return a.timestamp return a.timestamp
- b.timestamp - b.timestamp
}) })
@ -707,64 +546,19 @@ class ChatPage extends LitElement {
this.isLoadingMessages = false this.isLoadingMessages = false
setTimeout(() => this.downElementObserver(), 500) setTimeout(() => this.downElementObserver(), 500)
} else { } else {
const replacedMessages = await replaceMessagesEdited({
decodedMessages: decodedMessages,
parentEpml,
isReceipient: isReceipient,
decodeMessageFunc: this.decodeMessage,
_publicKey: this._publicKey
})
const findNewMessages2 = messages.map(async(msg)=> { const renderEachMessage = replacedMessages.map(async(msg)=> {
const _eachMessage = this.decodeMessage(msg) await this.renderNewMessage(msg)
let parsedMessageObj = _eachMessage
try {
parsedMessageObj = JSON.parse(_eachMessage.decodedMessage)
} catch (error) {
return msg
}
let msgItem = _eachMessage
let msgQuery = `&involving=${_eachMessage.recipient}&involving=${_eachMessage.sender}`
if(!isReceipient){
msgQuery = `&txGroupId=${_eachMessage.txGroupId}`
}
try {
if(parsedMessageObj.repliedTo){
const response = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
});
if(response && Array.isArray(response) && response.length !== 0){
msgItem = {
..._eachMessage,
repliedToData : this.decodeMessage(response[0])
}
} else {
const response2 = await parentEpml.request('apiCall', {
type: 'api',
url: `/chat/messages?reference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
});
if(response2 && Array.isArray(response2) && response2.length !== 0){
msgItem = {
..._eachMessage,
repliedToData : this.decodeMessage(response2[0])
}
}
}
}
} catch (error) {
console.log(error)
}
this.renderNewMessage(msgItem)
}) })
await Promise.all(findNewMessages2) await Promise.all(renderEachMessage)
// this.newMessages = this.newMessages.concat(_newMessages) // this.newMessages = this.newMessages.concat(_newMessages)

Loading…
Cancel
Save