From 69e6453183ae7101fa5dff6b71fbcc2a70474b03 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Wed, 10 Nov 2021 18:34:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B6=88=E6=81=AF=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/redux/setup.ts | 8 ++++++++ shared/redux/slices/chat.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/shared/redux/setup.ts b/shared/redux/setup.ts index ce639e7b..b4b03351 100644 --- a/shared/redux/setup.ts +++ b/shared/redux/setup.ts @@ -161,6 +161,14 @@ function listenNotify(socket: AppSocket, store: AppStore) { } }); + socket.listen('chat.message.update', (message) => { + store.dispatch( + chatActions.updateMessageInfo({ + message, + }) + ); + }); + socket.listen( 'chat.converse.updateDMConverse', (converse) => { diff --git a/shared/redux/slices/chat.ts b/shared/redux/slices/chat.ts index 2c560679..a4cff6c8 100644 --- a/shared/redux/slices/chat.ts +++ b/shared/redux/slices/chat.ts @@ -163,6 +163,32 @@ const chatSlice = createSlice({ state.ack[converseId] = lastMessageId; }, + /** + * 更新消息信息 + */ + updateMessageInfo( + state, + action: PayloadAction<{ + message: ChatMessage; + }> + ) { + const { message } = action.payload; + const converseId = message.converseId; + const converse = state.converses[converseId]; + if (!converse) { + console.warn('Not found converse,', converseId); + return; + } + + const index = converse.messages.findIndex((m) => m._id === message._id); + if (index >= 0) { + converse.messages[index] = { + ...converse.messages[index], + ...message, + }; + } + }, + /** * 设置远程的最后一条会话的id */