Merge pull request #142 from PhillipLangMartinez/bugfix/remove-reactions

Bugfix/remove reactions
This commit is contained in:
AlphaX-Projects 2023-03-16 11:02:20 +01:00 committed by GitHub
commit 6f7d0d3950
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 117 deletions

View File

@ -2766,7 +2766,8 @@ class ChatPage extends LitElement {
parentEpml, parentEpml,
isReceipient: isReceipient, isReceipient: isReceipient,
decodeMessageFunc: this.decodeMessage, decodeMessageFunc: this.decodeMessage,
_publicKey: this._publicKey _publicKey: this._publicKey,
isNotInitial: true
}) })
const renderEachMessage = replacedMessages.map(async(msg)=> { const renderEachMessage = replacedMessages.map(async(msg)=> {
@ -2829,7 +2830,7 @@ class ChatPage extends LitElement {
async renderNewMessage(newMessage) { async renderNewMessage(newMessage) {
if(newMessage.chatReference){ if(newMessage.chatReference){
const findOriginalMessageIndex = this.messagesRendered.findIndex(msg=> msg.signature === newMessage.chatReference || (msg.chatReference && msg.chatReference === newMessage.chatReference) ) const findOriginalMessageIndex = this.messagesRendered.findIndex(msg=> msg.signature === newMessage.chatReference || (msg.chatReference && msg.chatReference === newMessage.chatReference) )
if(findOriginalMessageIndex !== -1){ if(findOriginalMessageIndex !== -1 && this.messagesRendered[findOriginalMessageIndex].sender === newMessage.sender){
const newMessagesRendered = [...this.messagesRendered] const newMessagesRendered = [...this.messagesRendered]
newMessagesRendered[findOriginalMessageIndex] = {...newMessage, timestamp: newMessagesRendered[findOriginalMessageIndex].timestamp, senderName: newMessagesRendered[findOriginalMessageIndex].senderName, newMessagesRendered[findOriginalMessageIndex] = {...newMessage, timestamp: newMessagesRendered[findOriginalMessageIndex].timestamp, senderName: newMessagesRendered[findOriginalMessageIndex].senderName,
sender: newMessagesRendered[findOriginalMessageIndex].sender, editedTimestamp: newMessage.timestamp } sender: newMessagesRendered[findOriginalMessageIndex].sender, editedTimestamp: newMessage.timestamp }

View File

@ -410,7 +410,7 @@ class MessageTemplate extends LitElement {
repliedToData = this.messageObj.repliedToData; repliedToData = this.messageObj.repliedToData;
isImageDeleted = parsedMessageObj.isImageDeleted; isImageDeleted = parsedMessageObj.isImageDeleted;
isAttachmentDeleted = parsedMessageObj.isAttachmentDeleted; isAttachmentDeleted = parsedMessageObj.isAttachmentDeleted;
reactions = parsedMessageObj.reactions || []; // reactions = parsedMessageObj.reactions || [];
version = parsedMessageObj.version; version = parsedMessageObj.version;
isForwarded = parsedMessageObj.type === 'forward'; isForwarded = parsedMessageObj.type === 'forward';
isEdited = parsedMessageObj.isEdited && true; isEdited = parsedMessageObj.isEdited && true;
@ -1105,7 +1105,7 @@ class ChatMenu extends LitElement {
render() { render() {
return html` return html`
<div class="container"> <div class="container">
<div <!-- <div
class=${`menu-icon reaction ${!this.firstMessageInChat ? "tooltip" : ""}`} class=${`menu-icon reaction ${!this.firstMessageInChat ? "tooltip" : ""}`}
data-text="${translate("blockpage.bcchange13")}" data-text="${translate("blockpage.bcchange13")}"
@click=${(e) => { @click=${(e) => {
@ -1122,7 +1122,7 @@ class ChatMenu extends LitElement {
}} }}
> >
<vaadin-icon icon="vaadin:smiley-o" slot="icon"></vaadin-icon> <vaadin-icon icon="vaadin:smiley-o" slot="icon"></vaadin-icon>
</div> </div> -->
<div <div
class=${`menu-icon ${!this.firstMessageInChat ? "tooltip" : ""}`} class=${`menu-icon ${!this.firstMessageInChat ? "tooltip" : ""}`}
data-text="${translate("blockpage.bcchange14")}" data-text="${translate("blockpage.bcchange14")}"

View File

@ -6,112 +6,48 @@ export const replaceMessagesEdited = async ({
_publicKey _publicKey
}) => { }) => {
const findNewMessages = decodedMessages.map(async (msg) => { const findNewMessages = decodedMessages.map(async (msg) => {
let originalMsg = msg
let msgItem = msg let msgItem = msg
try { try {
if(msg.chatReference){ let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
originalMsg = await parentEpml.request("apiCall", {
type: "api",
url: `/chat/message/${msg.chatReference}`,
})
originalMsg.chatReference = msg.chatReference
}
let msgQuery = `&involving=${originalMsg.recipient}&involving=${originalMsg.sender}`
if (!isReceipient) { if (!isReceipient) {
msgQuery = `&txGroupId=${originalMsg.txGroupId}` msgQuery = `&txGroupId=${msg.txGroupId}`
} }
const response = await parentEpml.request("apiCall", { const response = await parentEpml.request("apiCall", {
type: "api", type: "api",
url: `/chat/messages?chatreference=${originalMsg.signature}&reverse=true${msgQuery}`, url: `/chat/messages?chatreference=${msg.signature}&reverse=true${msgQuery}&limit=1&sender=${msg.sender}`,
})
let decodedMsgs = []
response.map((eachMessage) => {
const msgRes = decodeMessageFunc(eachMessage, isReceipient, _publicKey)
let parsedMessageObj = originalMsg
try {
parsedMessageObj = JSON.parse(msgRes.decodedMessage)
decodedMsgs.push({
...msgRes,
decodedMessage: parsedMessageObj
})
} catch (error) {
}
})
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)=> { if (response && Array.isArray(response) && response.length !== 0) {
let responseItem = { ...response[0] }
return message.sender === originalMsg.sender const decodeResponseItem = decodeMessageFunc(responseItem, isReceipient, _publicKey)
}) delete decodeResponseItem.timestamp
if (filterReactions && Array.isArray(filterReactions) && filterReactions.length !== 0) {
let responseItem = { ...filterReactions[0] }
let parsedMessageMsg = {}
try {
parsedMessageMsg = JSON.parse(originalMsg.decodedMessage)
} catch (error) {
}
let originalPosterMsg = {
...originalMsg,
decodedMessage: parsedMessageMsg
}
if(filterWithoutReactions.length > 0){
originalPosterMsg = {
...filterWithoutReactions[0]
}
}
originalPosterMsg.decodedMessage = JSON.stringify({
...originalPosterMsg.decodedMessage,
reactions: responseItem.decodedMessage.reactions
})
msgItem = { msgItem = {
...originalPosterMsg, ...msg,
senderName: originalMsg.senderName, ...decodeResponseItem,
sender: originalMsg.sender, senderName: msg.senderName,
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: originalMsg.timestamp,
editedTimestamp: responseItem.timestamp,
}
}
} catch (error) { } catch (error) {
} }
return msgItem return msgItem
}) })
const updateMessages = await Promise.all(findNewMessages) const updateMessages = await Promise.all(findNewMessages)
const findNewMessages2 = updateMessages.map(async (originalMsg) => { const findNewMessages2 = updateMessages.map(async (msg) => {
let parsedMessageObj = originalMsg let parsedMessageObj = msg
try { try {
parsedMessageObj = JSON.parse(originalMsg.decodedMessage) parsedMessageObj = JSON.parse(msg.decodedMessage)
} catch (error) { } catch (error) {
return originalMsg return msg
} }
let msgItem = originalMsg let msgItem = msg
try { try {
let msgQuery = `&involving=${originalMsg.recipient}&involving=${originalMsg.sender}` let msgQuery = `&involving=${msg.recipient}&involving=${msg.sender}`
if (!isReceipient) { if (!isReceipient) {
msgQuery = `&txGroupId=${originalMsg.txGroupId}` msgQuery = `&txGroupId=${msg.txGroupId}`
} }
if (parsedMessageObj.repliedTo) { if (parsedMessageObj.repliedTo) {
let originalReply let originalReply
@ -129,48 +65,31 @@ export const replaceMessagesEdited = async ({
} }
const originalReplyMessage = originalReply.timestamp ? originalReply : originalReply.length !== 0 ? originalReply[0] : null
const response = await parentEpml.request("apiCall", { const response = await parentEpml.request("apiCall", {
type: "api", type: "api",
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}`, url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true${msgQuery}&limit=1&sender=${originalReplyMessage.sender}`,
}) })
let decodedMsgs = []
response.map((eachMessage) => {
const msgRes = decodeMessageFunc(eachMessage, isReceipient, _publicKey)
let parsedMessageObj = originalMsg
try {
parsedMessageObj = JSON.parse(msgRes.decodedMessage)
decodedMsgs.push({
...msgRes,
decodedMessage: parsedMessageObj
})
} catch (error) {
}
})
const filterWithoutReactions = decodedMsgs.filter((message)=> {
return message.sender === originalMsg.sender
})
const originalReplyMessage = originalReply.timestamp ? originalReply : originalReply.length !== 0 ? originalReply[0] : null
if ( if (
originalReplyMessage && originalReplyMessage &&
filterWithoutReactions && response &&
Array.isArray(filterWithoutReactions) && Array.isArray(response) &&
filterWithoutReactions.length !== 0 response.length !== 0
) { ) {
const decodeOriginalReply = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey) const decodeOriginalReply = decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey)
const decodeUpdatedReply = decodeMessageFunc(filterWithoutReactions[0], isReceipient, _publicKey) const decodeUpdatedReply = decodeMessageFunc(response[0], isReceipient, _publicKey)
const formattedRepliedToData = { const formattedRepliedToData = {
...decodeUpdatedReply, ...decodeUpdatedReply,
senderName: decodeOriginalReply.senderName, senderName: decodeOriginalReply.senderName,
sender: decodeOriginalReply.sender, sender: decodeOriginalReply.sender,
} }
msgItem = { msgItem = {
...originalMsg, ...msg,
repliedToData: formattedRepliedToData, repliedToData: formattedRepliedToData,
} }
} else { } else {
@ -181,7 +100,7 @@ export const replaceMessagesEdited = async ({
) { ) {
msgItem = { msgItem = {
...originalMsg, ...msg,
repliedToData: decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey), repliedToData: decodeMessageFunc(originalReplyMessage, isReceipient, _publicKey),
} }
} }