Browse Source

Merge pull request #140 from PhillipLangMartinez/bugfix/add-reaction-with-changed-message

keep message of original author
qortal-ui-dev
AlphaX-Projects 2 years ago committed by GitHub
parent
commit
749bffcccf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 98
      qortal-ui-plugins/plugins/utils/replace-messages-edited.js

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

@ -16,23 +16,79 @@ export const replaceMessagesEdited = async ({
type: "api", type: "api",
url: `/chat/messages?chatreference=${msg.signature}&reverse=true${msgQuery}`, url: `/chat/messages?chatreference=${msg.signature}&reverse=true${msgQuery}`,
}) })
let decodedMsgs = []
response.map((eachMessage) => {
const msgRes = decodeMessageFunc(eachMessage, isReceipient, _publicKey)
let parsedMessageObj = msg
try {
parsedMessageObj = JSON.parse(msgRes.decodedMessage)
decodedMsgs.push({
...msgRes,
decodedMessage: parsedMessageObj
})
} catch (error) {
if (response && Array.isArray(response) && response.length !== 0) { }
let responseItem = { ...response[0] }
const decodeResponseItem = decodeMessageFunc(responseItem, isReceipient, _publicKey)
delete decodeResponseItem.timestamp
msgItem = { })
const filterReactions = decodedMsgs.filter((message)=> {
if(!message.decodedMessage) return false
if(!message.decodedMessage.reactions || !Array.isArray(message.decodedMessage.reactions)) return false
return message.decodedMessage.reactions.length > 0
})
const filterWithoutReactions = decodedMsgs.filter((message)=> {
return message.sender === msg.sender
})
if (filterReactions && Array.isArray(filterReactions) && filterReactions.length !== 0) {
let responseItem = { ...filterReactions[0] }
let parsedMessageMsg = {}
try {
parsedMessageMsg = JSON.parse(msg.decodedMessage)
} catch (error) {
}
let originalPosterMsg = {
...msg, ...msg,
...decodeResponseItem, decodedMessage: parsedMessageMsg
}
if(filterWithoutReactions.length > 0){
originalPosterMsg = {
...filterWithoutReactions[0]
}
}
originalPosterMsg.decodedMessage = JSON.stringify({
...originalPosterMsg.decodedMessage,
reactions: responseItem.decodedMessage.reactions
})
msgItem = {
...originalPosterMsg,
senderName: msg.senderName, senderName: msg.senderName,
sender: msg.sender, sender: msg.sender,
editedTimestamp: response[0].timestamp, editedTimestamp: response[0].timestamp,
} }
} }
if ((!Array.isArray(filterReactions) || (filterReactions || []).length === 0) && filterWithoutReactions.length > 0) {
let responseItem = { ...filterWithoutReactions[0] }
const originalPosterMsg = JSON.stringify(responseItem.decodedMessage)
msgItem = {
...responseItem,
decodedMessage: originalPosterMsg,
timestamp: msg.timestamp,
editedTimestamp: responseItem.timestamp,
}
}
} catch (error) { } catch (error) {
} }
return msgItem return msgItem
}) })
const updateMessages = await Promise.all(findNewMessages) const updateMessages = await Promise.all(findNewMessages)
@ -50,7 +106,6 @@ export const replaceMessagesEdited = async ({
msgQuery = `&txGroupId=${msg.txGroupId}` msgQuery = `&txGroupId=${msg.txGroupId}`
} }
if (parsedMessageObj.repliedTo) { if (parsedMessageObj.repliedTo) {
console.log({parsedMessageObj})
let originalReply let originalReply
if(+parsedMessageObj.version > 2){ if(+parsedMessageObj.version > 2){
originalReply = await parentEpml.request("apiCall", { originalReply = await parentEpml.request("apiCall", {
@ -71,17 +126,36 @@ export const replaceMessagesEdited = async ({
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`, url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`,
}) })
let decodedMsgs = []
response.map((eachMessage) => {
const msgRes = decodeMessageFunc(eachMessage, isReceipient, _publicKey)
let parsedMessageObj = msg
try {
parsedMessageObj = JSON.parse(msgRes.decodedMessage)
decodedMsgs.push({
...msgRes,
decodedMessage: parsedMessageObj
})
} catch (error) {
}
})
const filterWithoutReactions = decodedMsgs.filter((message)=> {
return message.sender === msg.sender
})
const originalReplyMessage = originalReply.timestamp ? originalReply : originalReply.length !== 0 ? originalReply[0] : null const originalReplyMessage = originalReply.timestamp ? originalReply : originalReply.length !== 0 ? originalReply[0] : null
if ( if (
originalReplyMessage && originalReplyMessage &&
response && filterWithoutReactions &&
Array.isArray(response) && Array.isArray(filterWithoutReactions) &&
response.length !== 0 filterWithoutReactions.length !== 0
) { ) {
const decodeOriginalReply = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey) const decodeOriginalReply = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey)
const decodeUpdatedReply = decodeMessageFunc(response[0], isReceipient, _publicKey) const decodeUpdatedReply = decodeMessageFunc(filterWithoutReactions[0], isReceipient, _publicKey)
const formattedRepliedToData = { const formattedRepliedToData = {
...decodeUpdatedReply, ...decodeUpdatedReply,
senderName: decodeOriginalReply.senderName, senderName: decodeOriginalReply.senderName,

Loading…
Cancel
Save