diff --git a/shared/redux/setup.ts b/shared/redux/setup.ts index b4b03351..e80afbfc 100644 --- a/shared/redux/setup.ts +++ b/shared/redux/setup.ts @@ -169,6 +169,18 @@ function listenNotify(socket: AppSocket, store: AppStore) { ); }); + socket.listen<{ + converseId: string; + messageId: string; + }>('chat.message.delete', ({ converseId, messageId }) => { + store.dispatch( + chatActions.deleteMessageById({ + converseId, + messageId, + }) + ); + }); + socket.listen( 'chat.converse.updateDMConverse', (converse) => { diff --git a/shared/redux/slices/chat.ts b/shared/redux/slices/chat.ts index a4cff6c8..71061c88 100644 --- a/shared/redux/slices/chat.ts +++ b/shared/redux/slices/chat.ts @@ -189,6 +189,29 @@ const chatSlice = createSlice({ } }, + /** + * 删除消息 + */ + deleteMessageById( + state, + action: PayloadAction<{ + converseId: string; + messageId: string; + }> + ) { + const { converseId, messageId } = action.payload; + const converse = state.converses[converseId]; + if (!converse) { + console.warn('Not found converse,', converseId); + return; + } + + const index = converse.messages.findIndex((m) => m._id === messageId); + if (index >= 0) { + converse.messages.splice(index, 1); + } + }, + /** * 设置远程的最后一条会话的id */