From ad7b43d752d5c6b630af1cd981c26ccf92246a35 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Mon, 26 Feb 2024 09:37:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=93=BE=E6=8E=A5=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E4=B8=8A=E7=BA=A7=E7=BB=84=E4=BB=B6re-render;=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96loginUser;=20=E4=B8=8D=E5=90=AB=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E6=A8=A1=E6=9D=BF;=20=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=92=8C=E6=B6=88=E6=81=AF=E5=8F=B3=E9=94=AE?= =?UTF-8?q?=E8=8F=9C=E5=8D=95;=20=E4=B8=BB=E5=8A=A8=E9=87=8D=E8=BF=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/msgUtils.js | 3 +- src/stores/ConversationStore.js | 17 ++- src/views/AuthApp.jsx | 17 ++- src/views/Conversations/ChatWindow.jsx | 18 +-- .../Components/ConversationsList.jsx | 123 ++++++++---------- .../Components/Input/ImageUpload.jsx | 59 +++++++++ .../{InputTemplate.jsx => Input/Template.jsx} | 16 +-- .../Components/InputComposer.jsx | 53 +++----- .../Conversations/Components/Messages.jsx | 34 ++--- src/views/Conversations/Conversations.css | 13 ++ 10 files changed, 199 insertions(+), 154 deletions(-) create mode 100644 src/views/Conversations/Components/Input/ImageUpload.jsx rename src/views/Conversations/Components/{InputTemplate.jsx => Input/Template.jsx} (90%) diff --git a/src/lib/msgUtils.js b/src/lib/msgUtils.js index 557cccd..85268dc 100644 --- a/src/lib/msgUtils.js +++ b/src/lib/msgUtils.js @@ -185,7 +185,8 @@ export const whatsappMsgTypeMapped = { type: 'photo', data: (msg) => ({ id: msg.wamid, - data: { id: msg.wamid, uri: msg.image.link, width: 200, height: 200, alt: '' }, + text: msg.image.caption, + data: { id: msg.wamid, uri: msg.image.link, width: 200, height: 200, alt: msg.image.caption, }, onOpen: () => { console.log('Open image', msg.image.link); }, diff --git a/src/stores/ConversationStore.js b/src/stores/ConversationStore.js index 96eb136..dd3ce0f 100644 --- a/src/stores/ConversationStore.js +++ b/src/stores/ConversationStore.js @@ -28,12 +28,12 @@ const initialConversationState = { // referenceMsg: {}, }; -export const templatesSlice = (set) => ({ +const templatesSlice = (set) => ({ templates: [], setTemplates: (templates) => set({ templates }), }); -export const websocketSlice = (set, get) => ({ +const websocketSlice = (set, get) => ({ websocket: null, websocketOpened: null, websocketRetrying: null, @@ -72,6 +72,13 @@ export const websocketSlice = (set, get) => ({ websocket.disconnect(); return set({ websocket: null }); }, + reconnectWebsocket: (userId) => { + const {disconnectWebsocket, connectWebsocket} = get(); + disconnectWebsocket(); + setTimeout(() => { + connectWebsocket(userId); + }, 500); + }, handleMessage: (data) => { console.log('handleMessage------------------'); console.log(data); @@ -113,12 +120,12 @@ export const websocketSlice = (set, get) => ({ }, }); -export const referenceMsgSlice = (set) => ({ +const referenceMsgSlice = (set) => ({ referenceMsg: {}, setReferenceMsg: (referenceMsg) => set({ referenceMsg }), }); -export const conversationSlice = (set, get) => ({ +const conversationSlice = (set, get) => ({ conversationsList: [], currentConversation: {}, @@ -166,7 +173,7 @@ export const conversationSlice = (set, get) => ({ }, }); -export const messageSlice = (set, get) => ({ +const messageSlice = (set, get) => ({ msgListLoading: false, activeConversations: {}, setMsgLoading: (msgListLoading) => set({ msgListLoading }), diff --git a/src/views/AuthApp.jsx b/src/views/AuthApp.jsx index 97bc460..5e0604e 100644 --- a/src/views/AuthApp.jsx +++ b/src/views/AuthApp.jsx @@ -13,7 +13,6 @@ import 'dayjs/locale/zh-cn' import 'react-chat-elements/dist/main.css' import '@/assets/App.css' import AppLogo from '@/assets/logo-gh.png' -import { isEmpty } from '@/utils/commons' const { Header, Footer, Content } = Layout const { Title } = Typography @@ -42,16 +41,16 @@ function AuthApp() { token: { colorBgContainer }, } = theme.useToken() - const { connectWebsocket, disconnectWebsocket, fetchInitialData } = useConversationStore(); + const { userId } = loginUser; useEffect(() => { - if (loginUser && loginUser.userId) { - connectWebsocket(loginUser.userId); - fetchInitialData(loginUser.userId); + if (userId) { + useConversationStore.getState().connectWebsocket(userId); + useConversationStore.getState().fetchInitialData(userId); } return () => { - disconnectWebsocket(); + useConversationStore.getState().disconnectWebsocket(); } - }, [loginUser.userId]); + }, [userId]); return ( e.preventDefault()} style={{ color: colorPrimary }}> - {loginUser.username.substring(1)}{loginUser.username} diff --git a/src/views/Conversations/ChatWindow.jsx b/src/views/Conversations/ChatWindow.jsx index c498262..edd93ae 100644 --- a/src/views/Conversations/ChatWindow.jsx +++ b/src/views/Conversations/ChatWindow.jsx @@ -18,16 +18,7 @@ const { Sider, Content, Header, Footer } = Layout; * */ const ChatWindow = () => { - console.log('chat window;;;;;;;;;;;;;;;;;;;;;;;;'); - // const { order_sn } = useParams(); - // const { loginUser } = useAuthContext(); - // const { currentConversation } = useConversationStore(); - useEffect(() => { - console.log('chat window 222;;;;;;;;;;;;;;;;;;;;;;;;'); - - return () => {}; - }, []); const [collapsedLeft, setCollapsedLeft] = useState(false); const [collapsedRight, setCollapsedRight] = useState(false); @@ -40,17 +31,18 @@ const ChatWindow = () => { className='h-full overflow-y-auto' style={{ maxHeight: 'calc(100vh - 198px)', height: 'calc(100vh - 198px)' }} collapsible={true} - breakpoint='xxl' + breakpoint='xl' collapsedWidth={73} collapsed={collapsedLeft} onBreakpoint={(broken) => { - console.log('xxxxxxxxxxxxxxxxxxxxxx', broken); + setCollapsedLeft(broken) + setCollapsedRight(broken) }} trigger={null}> - +