mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-02-11 17:55:51 +00:00
refactor getoldmessage logic
This commit is contained in:
parent
e708ffef82
commit
2811f9f67f
@ -19,6 +19,7 @@ import '@polymer/paper-spinner/paper-spinner-lite.js'
|
||||
import '@material/mwc-button'
|
||||
import '@material/mwc-dialog'
|
||||
import '@material/mwc-icon'
|
||||
import { replaceMessagesEdited } from '../../utils/replace-messages-edited.js';
|
||||
|
||||
const messagesCache = localForage.createInstance({
|
||||
name: "messages-cache",
|
||||
@ -451,100 +452,17 @@ class ChatPage extends LitElement {
|
||||
});
|
||||
|
||||
const decodeMsgs = getInitialMessages.map((eachMessage) => {
|
||||
|
||||
return this.decodeMessage(eachMessage)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
const findNewMessages = decodeMsgs.map(async(msg)=> {
|
||||
|
||||
let msgItem = msg
|
||||
try {
|
||||
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
|
||||
if(!this.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)
|
||||
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 = {
|
||||
...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 replaceMessagesEdited({
|
||||
decodedMessages: decodeMsgs,
|
||||
parentEpml,
|
||||
isReceipient: this.isReceipient,
|
||||
decodeMessageFunc: this.decodeMessage,
|
||||
_publicKey: this._publicKey
|
||||
})
|
||||
const updateMessages2 = await Promise.all(findNewMessages2)
|
||||
|
||||
this.messagesRendered = [...updateMessages2, ...this.messagesRendered].sort(function (a, b) {
|
||||
return a.timestamp
|
||||
- b.timestamp
|
||||
@ -917,7 +835,6 @@ class ChatPage extends LitElement {
|
||||
|
||||
|
||||
const stringified = JSON.stringify(messageObject)
|
||||
console.log({stringified})
|
||||
const size = new Blob([stringified]).size;
|
||||
this.chatMessageSize = size
|
||||
|
||||
@ -1046,18 +963,25 @@ class ChatPage extends LitElement {
|
||||
* @param {Object} encodedMessageObj
|
||||
*
|
||||
*/
|
||||
decodeMessage(encodedMessageObj) {
|
||||
decodeMessage(encodedMessageObj, isReceipient, _publicKey ) {
|
||||
let isReceipientVar
|
||||
let _publicKeyVar
|
||||
try {
|
||||
isReceipientVar = this.isReceipient === undefined ? isReceipient : this.isReceipient;
|
||||
_publicKeyVar = this._publicKey === undefined ? _publicKey : this._publicKey
|
||||
} catch (error) {
|
||||
isReceipientVar = isReceipient
|
||||
_publicKeyVar = _publicKey
|
||||
}
|
||||
|
||||
let decodedMessageObj = {}
|
||||
|
||||
if (this.isReceipient === true) {
|
||||
if (isReceipientVar === true) {
|
||||
// direct chat
|
||||
|
||||
if (encodedMessageObj.isEncrypted === true && this._publicKey.hasPubKey === true && encodedMessageObj.data) {
|
||||
|
||||
let decodedMessage = window.parent.decryptChatMessage(encodedMessageObj.data, window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey, this._publicKey.key, encodedMessageObj.reference)
|
||||
if (encodedMessageObj.isEncrypted === true && _publicKeyVar.hasPubKey === true && encodedMessageObj.data) {
|
||||
let decodedMessage = window.parent.decryptChatMessage(encodedMessageObj.data, window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey, _publicKeyVar.key, encodedMessageObj.reference)
|
||||
decodedMessageObj = { ...encodedMessageObj, decodedMessage }
|
||||
} else if (encodedMessageObj.isEncrypted === false && encodedMessageObj.data) {
|
||||
|
||||
let bytesArray = window.parent.Base58.decode(encodedMessageObj.data)
|
||||
let decodedMessage = new TextDecoder('utf-8').decode(bytesArray)
|
||||
decodedMessageObj = { ...encodedMessageObj, decodedMessage }
|
||||
@ -1356,7 +1280,6 @@ class ChatPage extends LitElement {
|
||||
let _reference = new Uint8Array(64);
|
||||
window.crypto.getRandomValues(_reference);
|
||||
let reference = window.parent.Base58.encode(_reference);
|
||||
|
||||
const sendMessageRequest = async () => {
|
||||
if (this.isReceipient === true) {
|
||||
let chatResponse = await parentEpml.request('chat', {
|
||||
|
100
qortal-ui-plugins/plugins/utils/replace-messages-edited.js
Normal file
100
qortal-ui-plugins/plugins/utils/replace-messages-edited.js
Normal file
@ -0,0 +1,100 @@
|
||||
export const replaceMessagesEdited = async ({
|
||||
decodedMessages,
|
||||
parentEpml,
|
||||
isReceipient,
|
||||
decodeMessageFunc,
|
||||
_publicKey
|
||||
}) => {
|
||||
const findNewMessages = decodedMessages.map(async (msg) => {
|
||||
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}`,
|
||||
})
|
||||
|
||||
console.log({response})
|
||||
|
||||
if (response && Array.isArray(response) && response.length !== 0) {
|
||||
let responseItem = { ...response[0] }
|
||||
console.log('right before')
|
||||
const decodeResponseItem = decodeMessageFunc(responseItem, isReceipient, _publicKey)
|
||||
console.log({decodeResponseItem})
|
||||
delete decodeResponseItem.timestamp
|
||||
msgItem = {
|
||||
...msg,
|
||||
...decodeResponseItem,
|
||||
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) {
|
||||
console.log('error', {parsedMessageObj})
|
||||
return msg
|
||||
}
|
||||
console.log('noerror')
|
||||
let msgItem = msg
|
||||
try {
|
||||
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
|
||||
if (!isReceipient) {
|
||||
msgQuery = `&txGroupId=${msg.txGroupId}`
|
||||
}
|
||||
|
||||
console.log({parsedMessageObj})
|
||||
if (parsedMessageObj.repliedTo) {
|
||||
const response = await parentEpml.request("apiCall", {
|
||||
type: "api",
|
||||
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
|
||||
})
|
||||
console.log({response2: response})
|
||||
if (
|
||||
response &&
|
||||
Array.isArray(response) &&
|
||||
response.length !== 0
|
||||
) {
|
||||
msgItem = {
|
||||
...msg,
|
||||
repliedToData: decodeMessageFunc(response[0], isReceipient, _publicKey),
|
||||
}
|
||||
} 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: decodeMessageFunc(response2[0]),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
|
||||
return msgItem
|
||||
})
|
||||
const updateMessages2 = await Promise.all(findNewMessages2)
|
||||
|
||||
return updateMessages2
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user