From 684310e02a3a320fb037c21ead13239846356c0e Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Mon, 11 Apr 2022 21:17:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=85=88=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E5=86=8D=E5=9B=9E=E5=A4=8D=E6=97=A0=E6=B3=95=E5=B8=A6?= =?UTF-8?q?=E4=B8=8A=E5=9B=9E=E5=A4=8D=E5=86=85=E5=AE=B9=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/redux/hooks/useConverseMessage.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/shared/redux/hooks/useConverseMessage.ts b/shared/redux/hooks/useConverseMessage.ts index 86dd9726..a382112c 100644 --- a/shared/redux/hooks/useConverseMessage.ts +++ b/shared/redux/hooks/useConverseMessage.ts @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect } from 'react'; import { ensureDMConverse } from '../../helper/converse-helper'; import { useAsync } from '../../hooks/useAsync'; import { showErrorToasts } from '../../manager/ui'; @@ -21,11 +21,13 @@ import { import { MessageHelper } from '../../utils/message-helper'; import { ChatConverseType } from '../../model/converse'; import { sharedEvent } from '../../event'; +import { useUpdateRef } from '../../hooks/useUpdateRef'; function useHandleSendMessage(context: ConverseContext) { const { converseId } = context; const dispatch = useAppDispatch(); const { hasContext, replyMsg, clearReplyMsg } = useChatBoxContext(); + const replyMsgRef = useUpdateRef(replyMsg); // NOTICE: 这个是为了修复一个边界case: 当先输入文本再选中消息回复时,直接发送无法带上回复信息 /** * 发送消息 @@ -43,8 +45,8 @@ function useHandleSendMessage(context: ConverseContext) { if (hasContext === true) { // 如果有上下文, 则组装payload const msgHelper = new MessageHelper(payload); - if (!_isNil(replyMsg)) { - msgHelper.setReplyMsg(replyMsg); + if (!_isNil(replyMsgRef.current)) { + msgHelper.setReplyMsg(replyMsgRef.current); clearReplyMsg(); } @@ -65,7 +67,7 @@ function useHandleSendMessage(context: ConverseContext) { showErrorToasts(err); } }, - [converseId, hasContext, replyMsg, clearReplyMsg] + [converseId, hasContext, clearReplyMsg] ); return handleSendMessage;