From 3eee0a206d4e6c84ea28816ef6bc7888fa09d133 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 20 Mar 2024 15:04:27 +0800 Subject: [PATCH 1/6] =?UTF-8?q?perf:=20=E5=9C=A8=E7=BA=BF=E8=81=8A?= =?UTF-8?q?=E5=A4=A9:=20=E6=98=BE=E7=A4=BA=E8=BF=87=E6=9C=9F=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/ConversationStore.js | 2 ++ .../Conversations/Components/ConversationsList.jsx | 2 +- .../Conversations/Components/ExpireTimeClock.jsx | 13 +++++++------ .../Conversations/Components/InputComposer.jsx | 6 +++--- .../Conversations/Components/MessagesHeader.jsx | 2 +- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/stores/ConversationStore.js b/src/stores/ConversationStore.js index f171ec5..781a872 100644 --- a/src/stores/ConversationStore.js +++ b/src/stores/ConversationStore.js @@ -260,6 +260,7 @@ const messageSlice = (set, get) => ({ conversationsList.splice(targetIndex, 1, { ...conversationsList[targetIndex], last_received_time: message.deliverTime, // todo: 需要+8 hours + conversation_expiretime: message?.conversation?.expireTime || conversationsList[targetIndex].conversation_expiretime || '', // 保留使用UTC时间 }); } else if (targetIndex === -1) { // 当前客户端不存在的会话 todo: 设置为当前(在WhatsApp返回号码不一致时) @@ -273,6 +274,7 @@ const messageSlice = (set, get) => ({ whatsapp_name: message?.senderName || message?.sender || '', customer_name: message?.senderName || message?.sender || '', whatsapp_phone_number: message.from, + conversation_expiretime: message?.conversation?.expireTime || '', // 保留使用UTC时间 }]; } diff --git a/src/views/Conversations/Components/ConversationsList.jsx b/src/views/Conversations/Components/ConversationsList.jsx index 12c55f4..1ca83c9 100644 --- a/src/views/Conversations/Components/ConversationsList.jsx +++ b/src/views/Conversations/Components/ConversationsList.jsx @@ -1,7 +1,7 @@ import { useEffect, useState, useRef } from 'react'; import { useParams, useNavigate, useLocation } from 'react-router-dom'; import { Dropdown, Input } from 'antd'; -import { fetchOrderConversationsList, fetchConversationItemClose, fetchMessages, MESSAGE_PAGE_SIZE, } from '@/actions/ConversationActions'; +import { fetchOrderConversationsList, fetchConversationItemClose, } from '@/actions/ConversationActions'; import { ChatItem } from 'react-chat-elements'; import { isEmpty } from '@/utils/utils'; import useConversationStore from '@/stores/ConversationStore'; diff --git a/src/views/Conversations/Components/ExpireTimeClock.jsx b/src/views/Conversations/Components/ExpireTimeClock.jsx index cad09a1..af6a988 100644 --- a/src/views/Conversations/Components/ExpireTimeClock.jsx +++ b/src/views/Conversations/Components/ExpireTimeClock.jsx @@ -12,19 +12,20 @@ dayjs.extend(utc); dayjs.extend(timezone); dayjs.extend(relativeTime); -const ExpireTimeClock = () => { - const currentConversation = useConversationStore((state) => state.currentConversation); +const ExpireTimeClock = ({ expireTime }) => { + // const expireTime = useConversationStore((state) => state.currentConversation.conversation_expiretime); const [customerDateTime, setCustomerDateTime] = useState(); useEffect(() => { const intervalId = setInterval(() => { - setCustomerDateTime(dayjs(currentConversation.conversation_expireTime).tz('Asia/Shanghai').fromNow()); - }, 1000); // Update every second + // .tz('Asia/Shanghai') UTC 时间转换成 Asia/Shanghai 时区时间 GMT+8 + setCustomerDateTime(dayjs(expireTime).add(8, 'hours').fromNow()); + }, 1000); return () => clearInterval(intervalId); - }, []); + }, [expireTime]); - return currentConversation.conversation_expireTime ? ( + return expireTime ? ( <> diff --git a/src/views/Conversations/Components/InputComposer.jsx b/src/views/Conversations/Components/InputComposer.jsx index af1bcc3..3b1e26c 100644 --- a/src/views/Conversations/Components/InputComposer.jsx +++ b/src/views/Conversations/Components/InputComposer.jsx @@ -216,10 +216,10 @@ const InputComposer = ({ mobile }) => {
{referenceMsg.id && ( -
+
{referenceMsg.senderName} {referenceMsg.type === 'photo' && } - {referenceMsg.originText} + {referenceMsg.originText}
diff --git a/src/views/Conversations/Components/MessagesHeader.jsx b/src/views/Conversations/Components/MessagesHeader.jsx index c9b2aca..72d15aa 100644 --- a/src/views/Conversations/Components/MessagesHeader.jsx +++ b/src/views/Conversations/Components/MessagesHeader.jsx @@ -54,7 +54,7 @@ const MessagesHeader = () => { - + {/* {customerDateTime} */} From 89563522740ddb6844a019daa8b4c39054c5d904 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 20 Mar 2024 15:46:36 +0800 Subject: [PATCH 2/6] key --- src/views/ChatHistory.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/ChatHistory.jsx b/src/views/ChatHistory.jsx index 5073bed..3cc7620 100644 --- a/src/views/ChatHistory.jsx +++ b/src/views/ChatHistory.jsx @@ -394,7 +394,7 @@ function ChatHistory() { } : {})} renderAddCmp={ -
+
From c7853d6811a6493df72c395f960b98ad21037db6 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 20 Mar 2024 15:59:43 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fixup!=20perf:=20=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E8=81=8A=E5=A4=A9:=20=E6=98=BE=E7=A4=BA=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/ConversationStore.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stores/ConversationStore.js b/src/stores/ConversationStore.js index 781a872..6dbe4ee 100644 --- a/src/stores/ConversationStore.js +++ b/src/stores/ConversationStore.js @@ -255,11 +255,11 @@ const messageSlice = (set, get) => ({ const targetIndex = conversationsList.findIndex((ele) => String(ele.sn) === String(targetId)); let newConversations = []; - if (targetIndex !== -1 && message.status === 'received') { // 'delivered' + if (targetIndex !== -1) { // 'delivered' // 更新列表的时间 conversationsList.splice(targetIndex, 1, { ...conversationsList[targetIndex], - last_received_time: message.deliverTime, // todo: 需要+8 hours + last_received_time: message.status === 'received' ? message.deliverTime : conversationsList[targetIndex].last_received_time, // todo: 需要+8 hours conversation_expiretime: message?.conversation?.expireTime || conversationsList[targetIndex].conversation_expiretime || '', // 保留使用UTC时间 }); } else if (targetIndex === -1) { From d4b335b75d30f785ff2d6549d59335fa8ef02424 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 20 Mar 2024 16:00:00 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fixup!=20perf:=20=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E8=81=8A=E5=A4=A9:=20=E6=98=BE=E7=A4=BA=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/ExpireTimeClock.jsx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/views/Conversations/Components/ExpireTimeClock.jsx b/src/views/Conversations/Components/ExpireTimeClock.jsx index af6a988..a23907e 100644 --- a/src/views/Conversations/Components/ExpireTimeClock.jsx +++ b/src/views/Conversations/Components/ExpireTimeClock.jsx @@ -15,7 +15,8 @@ dayjs.extend(relativeTime); const ExpireTimeClock = ({ expireTime }) => { // const expireTime = useConversationStore((state) => state.currentConversation.conversation_expiretime); - const [customerDateTime, setCustomerDateTime] = useState(); + const [customerDateTime, setCustomerDateTime] = useState(''); + const [isExpired, setIsExpired] = useState(false); useEffect(() => { const intervalId = setInterval(() => { @@ -25,11 +26,19 @@ const ExpireTimeClock = ({ expireTime }) => { return () => clearInterval(intervalId); }, [expireTime]); - return expireTime ? ( + useEffect(() => { + const _ago = customerDateTime.slice(-3) === 'ago'; + setIsExpired(_ago); + + return () => {}; + }, [customerDateTime]); + + + return expireTime && !isExpired ? ( <> - + - Expire {customerDateTime} + {isExpired ? 'Expired' : 'Expire'} {customerDateTime} ) : null; From d53e5ad626d42552db4489bfa08afbbffaf28629 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 20 Mar 2024 16:00:13 +0800 Subject: [PATCH 5/6] fixup! key --- src/views/Conversations/Components/MessagesList.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/Conversations/Components/MessagesList.jsx b/src/views/Conversations/Components/MessagesList.jsx index 7b1bb9a..c36afb7 100644 --- a/src/views/Conversations/Components/MessagesList.jsx +++ b/src/views/Conversations/Components/MessagesList.jsx @@ -120,7 +120,7 @@ const MessagesList = ({ messages, handlePreview, reference, longListLoading, get ? [ { onClickButton: () => handleContactClick(message.data), - Component: () =>
发消息
, + Component: () =>
发消息
, }, ] : []), @@ -128,7 +128,7 @@ const MessagesList = ({ messages, handlePreview, reference, longListLoading, get onClickButton: () => { navigator.clipboard.writeText(message.text); }, - Component: () =>
复制
, + Component: () =>
复制
, }, ], } From 2d9800ce2935208550ab38a55ee450d7fc127012 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 20 Mar 2024 16:00:24 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actions/ConversationActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/ConversationActions.js b/src/actions/ConversationActions.js index 0905970..e48059e 100644 --- a/src/actions/ConversationActions.js +++ b/src/actions/ConversationActions.js @@ -88,7 +88,7 @@ export const fetchConversationsSearch = async (params) => { customer_name: `${ele.whatsapp_name || ''}`.trim(), whatsapp_name: `${ele.whatsapp_name || ''}`.trim(), opi_sn: ele.OPI_SN || ele.opi_sn || 0, - OPI_Name: `${ele.OPI_Name || ''}`.trim(), + OPI_Name: `${ele.OPI_Name || ele.opi_name || ''}`.trim(), matchMsgList: parseRenderMessageList((ele.msglist_AsJOSN || [])), // .reverse()), })); return list;