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 } ` ,
} )
if ( response && Array . isArray ( response ) && response . length !== 0 ) {
let responseItem = { ... response [ 0 ] }
const decodeResponseItem = decodeMessageFunc ( responseItem , isReceipient , _publicKey )
delete decodeResponseItem . timestamp
msgItem = {
... msg ,
... decodeResponseItem ,
senderName : msg . senderName ,
sender : msg . sender ,
editedTimestamp : response [ 0 ] . timestamp ,
}
}
} catch ( 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 ( ! isReceipient ) {
msgQuery = ` &txGroupId= ${ msg . txGroupId } `
}
if ( parsedMessageObj . repliedTo ) {
const originalReply = await parentEpml . request ( "apiCall" , {
type : "api" ,
url : ` /chat/messages?reference= ${ parsedMessageObj . repliedTo } &reverse=true ${ msgQuery } ` ,
} )
const response = await parentEpml . request ( "apiCall" , {
type : "api" ,
url : ` /chat/messages?chatreference= ${ parsedMessageObj . repliedTo } &reverse=true ${ msgQuery } ` ,
} )
if (
originalReply &&
Array . isArray ( originalReply ) &&
originalReply . length !== 0 &&
response &&
Array . isArray ( response ) &&
response . length !== 0
) {
const decodeOriginalReply = decodeMessageFunc ( originalReply [ 0 ] , isReceipient , _publicKey )
const decodeUpdatedReply = decodeMessageFunc ( response [ 0 ] , isReceipient , _publicKey )
const formattedRepliedToData = {
... decodeUpdatedReply ,
senderName : decodeOriginalReply . senderName ,
sender : decodeOriginalReply . sender ,
}
msgItem = {
... msg ,
repliedToData : formattedRepliedToData ,
}
} else {
if (
originalReply &&
Array . isArray ( originalReply ) &&
originalReply . length !== 0
) {
msgItem = {
... msg ,
repliedToData : decodeMessageFunc ( originalReply [ 0 ] , isReceipient , _publicKey ) ,
}
}
}
}
} catch ( error ) {
}
return msgItem
} )
const updateMessages2 = await Promise . all ( findNewMessages2 )
return updateMessages2
}