From 662b614b606de5df666d07f9415ba1648cfc72d1 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Mon, 5 Feb 2024 16:57:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=B1=BB=E5=9E=8B,=20?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E6=98=AF=E5=90=A6=E5=85=81=E8=AE=B8=E5=BC=95?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/msgUtils.js | 2 ++ src/reducers/ConversationReducer.js | 6 ++++-- src/views/Conversations/Components/ConversationsList.jsx | 8 ++++---- src/views/Conversations/Components/Messages.jsx | 4 ++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/lib/msgUtils.js b/src/lib/msgUtils.js index 989e934..8fd8da1 100644 --- a/src/lib/msgUtils.js +++ b/src/lib/msgUtils.js @@ -212,6 +212,7 @@ export const parseRenderMessageItem = (msg) => { customer_name: msg?.customerProfile?.name || '', whatsapp_name: msg?.customerProfile?.name || '', whatsapp_phone_number: msg.from, + whatsapp_msg_type: msg.type, }; }; /** @@ -240,6 +241,7 @@ export const parseRenderMessageList = (messages, conversationid = null) => { : {}), // conversationid: conversationid, // title: msg.customerProfile.name, + whatsapp_msg_type: msgContent.type, }; }); }; diff --git a/src/reducers/ConversationReducer.js b/src/reducers/ConversationReducer.js index 1917345..357a0d8 100644 --- a/src/reducers/ConversationReducer.js +++ b/src/reducers/ConversationReducer.js @@ -70,10 +70,12 @@ const ConversationReducer = (state = initialState, action) => { const message = action.payload; const targetId = message.conversationid; const targetMsgs = (activeConversations[String(targetId)] || []).map((ele) => { + // 更新状态 + // * 已读的不再更新状态, 有时候投递结果在已读之后返回 if (ele.id === ele.actionId && ele.actionId === message.actionId) { - return { ...ele, id: message.id, status: message.status, dateString: message.dateString }; + return { ...ele, id: message.id, status: ele.status === 'read' ? ele.status : message.status, dateString: message.dateString }; } else if (ele.id === message.id) { - return { ...ele, id: message.id, status: message.status, dateString: message.dateString }; + return { ...ele, id: message.id, status: ele.status === 'read' ? ele.status : message.status, dateString: message.dateString }; } return ele; }); diff --git a/src/views/Conversations/Components/ConversationsList.jsx b/src/views/Conversations/Components/ConversationsList.jsx index f05711a..09a6be8 100644 --- a/src/views/Conversations/Components/ConversationsList.jsx +++ b/src/views/Conversations/Components/ConversationsList.jsx @@ -102,15 +102,15 @@ const Conversations = () => { }; const switchConversation = async (item) => { console.log('invoke switch'); - if (String(item.sn) === String(currentConversation.sn)) { - return false; - } - dispatch(setCurrentConversation(item)); const messagesList = activeConversations[`${item.sn}`] || []; if (isEmpty(messagesList)) { const data = await fetchMessages({ opisn: userId, whatsappid: item.whatsapp_phone_number }); dispatch(receivedMessageList(item.sn, data)); } + if (String(item.sn) === String(currentConversation.sn)) { + return false; + } + dispatch(setCurrentConversation(item)); }; const onSwitchConversation = (item) => { diff --git a/src/views/Conversations/Components/Messages.jsx b/src/views/Conversations/Components/Messages.jsx index c319d81..6188b9b 100644 --- a/src/views/Conversations/Components/Messages.jsx +++ b/src/views/Conversations/Components/Messages.jsx @@ -48,12 +48,12 @@ const Messages = () => { notchStyle: { fill: '#ccd5ae' }, // forwarded: false, // todo: reaction: 只能发送一个emoji - replyButton: message.type === 'text' && message.status !== 'failed' ? true : false, + replyButton: ['text'].includes(message.whatsapp_msg_type) && message.status !== 'failed' ? true : false, onReplyClick: () => dispatch(setReplyTo(message)), className: 'whatsappme-container whitespace-pre-wrap', } : { - replyButton: message.type === 'text' ? true : false, + replyButton: ['text'].includes(message.whatsapp_msg_type) ? true : false, onReplyClick: () => dispatch(setReplyTo(message)), })} // notchStyle={{fill: '#ccd5ae'}}