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'}}