qortal-ui/qortal-ui-plugins/plugins/utils/replace-messages-edited.js

118 lines
3.2 KiB
JavaScript
Raw Normal View History

2022-10-29 17:39:23 +03:00
export const replaceMessagesEdited = async ({
decodedMessages,
parentEpml,
isReceipient,
decodeMessageFunc,
2023-03-16 09:53:56 +00:00
_publicKey
2022-10-29 17:39:23 +03:00
}) => {
const findNewMessages = decodedMessages.map(async (msg) => {
let msgItem = msg
try {
2023-03-16 09:53:56 +00:00
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
2022-10-29 17:39:23 +03:00
if (!isReceipient) {
2023-03-16 09:53:56 +00:00
msgQuery = `&txGroupId=${msg.txGroupId}`
2022-10-29 17:39:23 +03:00
}
const response = await parentEpml.request("apiCall", {
type: "api",
url: `/chat/messages?chatreference=${msg.signature}&reverse=true${msgQuery}&limit=1&sender=${msg.sender}&encoding=BASE64`,
2023-03-10 00:22:13 +00:00
})
2023-03-16 09:53:56 +00:00
if (response && Array.isArray(response) && response.length !== 0) {
let responseItem = { ...response[0] }
const decodeResponseItem = decodeMessageFunc(responseItem, isReceipient, _publicKey)
delete decodeResponseItem.timestamp
2023-03-15 23:16:28 +00:00
msgItem = {
2023-03-16 09:53:56 +00:00
...msg,
...decodeResponseItem,
senderName: msg.senderName,
sender: msg.sender,
2023-03-15 23:16:28 +00:00
editedTimestamp: response[0].timestamp,
}
}
2022-10-29 17:39:23 +03:00
} catch (error) {
}
2023-03-16 09:53:56 +00:00
2022-10-29 17:39:23 +03:00
return msgItem
})
const updateMessages = await Promise.all(findNewMessages)
2023-03-16 09:53:56 +00:00
const findNewMessages2 = updateMessages.map(async (msg) => {
let parsedMessageObj = msg
2022-10-29 17:39:23 +03:00
try {
2023-03-16 09:53:56 +00:00
parsedMessageObj = JSON.parse(msg.decodedMessage)
2022-10-29 17:39:23 +03:00
} catch (error) {
2023-03-16 09:53:56 +00:00
return msg
2022-10-29 17:39:23 +03:00
}
2023-03-16 09:53:56 +00:00
let msgItem = msg
2022-10-29 17:39:23 +03:00
try {
2023-03-16 09:53:56 +00:00
let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
2022-10-29 17:39:23 +03:00
if (!isReceipient) {
2023-03-16 09:53:56 +00:00
msgQuery = `&txGroupId=${msg.txGroupId}`
2022-10-29 17:39:23 +03:00
}
if (parsedMessageObj.repliedTo) {
2023-02-16 22:58:37 +02:00
let originalReply
if(+parsedMessageObj.version > 2){
originalReply = await parentEpml.request("apiCall", {
type: "api",
url: `/chat/message/${parsedMessageObj.repliedTo}?encoding=BASE64`,
2023-02-16 22:58:37 +02:00
})
}
if(+parsedMessageObj.version < 3){
originalReply = await parentEpml.request("apiCall", {
type: "api",
url: `/chat/messages?reference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}&encoding=BASE64`,
2023-02-16 22:58:37 +02:00
})
}
2023-03-16 09:53:56 +00:00
const originalReplyMessage = originalReply.timestamp ? originalReply : originalReply.length !== 0 ? originalReply[0] : null
2022-10-29 17:39:23 +03:00
const response = await parentEpml.request("apiCall", {
type: "api",
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}&limit=1&sender=${originalReplyMessage.sender}&encoding=BASE64`,
2022-10-29 17:39:23 +03:00
})
2023-01-25 10:40:59 +02:00
2022-10-29 17:39:23 +03:00
if (
2023-02-16 22:58:37 +02:00
originalReplyMessage &&
2023-03-16 09:53:56 +00:00
response &&
Array.isArray(response) &&
response.length !== 0
2022-10-29 17:39:23 +03:00
) {
2023-02-16 22:58:37 +02:00
const decodeOriginalReply = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey)
2023-01-25 10:40:59 +02:00
2023-03-16 09:53:56 +00:00
const decodeUpdatedReply = decodeMessageFunc(response[0], isReceipient, _publicKey)
2023-01-25 10:40:59 +02:00
const formattedRepliedToData = {
...decodeUpdatedReply,
senderName: decodeOriginalReply.senderName,
sender: decodeOriginalReply.sender,
}
2022-10-29 17:39:23 +03:00
msgItem = {
2023-03-16 09:53:56 +00:00
...msg,
2023-01-25 10:40:59 +02:00
repliedToData: formattedRepliedToData,
2022-10-29 17:39:23 +03:00
}
} else {
2023-01-25 10:40:59 +02:00
2022-10-29 17:39:23 +03:00
if (
2023-02-16 22:58:37 +02:00
originalReplyMessage
2022-10-29 17:39:23 +03:00
) {
2023-01-25 10:40:59 +02:00
2022-10-29 17:39:23 +03:00
msgItem = {
2023-03-16 09:53:56 +00:00
...msg,
2023-02-16 22:58:37 +02:00
repliedToData: decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey),
2022-10-29 17:39:23 +03:00
}
}
}
}
} catch (error) {
}
return msgItem
})
const updateMessages2 = await Promise.all(findNewMessages2)
return updateMessages2
}