Refactor MessageEnter component to streamline AI message handling. Update message sending logic to prioritize passed content, ensuring better integration with AI-assisted and AI takeover modes. Clean up unused code and enhance console logging for improved debugging.

This commit is contained in:
超级老白兔
2025-10-29 14:53:15 +08:00
parent 5fb15592ff
commit 9c5e253d75

View File

@@ -61,23 +61,6 @@ const MessageEnter: React.FC<MessageEnterProps> = ({ contract }) => {
const isAiAssist = aiQuoteMessageContent === 1; // AI辅助
const isAiTakeover = aiQuoteMessageContent === 2; // AI接管
useEffect(() => {
if (quoteMessageContent) {
console.log("aiQuoteMessageContent", aiQuoteMessageContent);
if (isAiAssist) {
setInputValue(quoteMessageContent);
}
if (isAiTakeover) {
setInputValue(quoteMessageContent);
setTimeout(() => {
handleSend();
});
}
}
}, [quoteMessageContent]);
// 取消AI生成
const handleCancelAi = () => {
// 停止AI加载状态
@@ -87,10 +70,16 @@ const MessageEnter: React.FC<MessageEnterProps> = ({ contract }) => {
message.info("已取消AI生成");
};
const handleSend = async () => {
if (!inputValue) return;
console.log("handleSend", inputValue);
console.log(!inputValue.trim());
// 发送消息(支持传入内容参数,避免闭包问题)
const handleSend = async (content?: string) => {
const messageContent = content || inputValue; // 优先使用传入的内容
if (!messageContent || !messageContent.trim()) {
console.warn("消息内容为空,取消发送");
return;
}
console.log("handleSend", messageContent);
const messageId = +Date.now();
// 构造本地消息对象
const localMessage: ChatRecord = {
@@ -101,7 +90,7 @@ const MessageEnter: React.FC<MessageEnterProps> = ({ contract }) => {
tenantId: 0,
accountId: 0,
synergyAccountId: 0,
content: inputValue,
content: messageContent,
msgType: 1,
msgSubType: 0,
msgSvrId: "",
@@ -126,13 +115,36 @@ const MessageEnter: React.FC<MessageEnterProps> = ({ contract }) => {
wechatFriendId: contract?.chatroomId ? 0 : contract.id,
msgSubType: 0,
msgType: 1,
content: inputValue,
content: messageContent,
seq: messageId,
};
sendCommand("CmdSendMessage", params);
// 清空输入框和AI回复内容
setInputValue("");
updateQuoteMessageContent("");
};
// AI 消息处理
useEffect(() => {
if (quoteMessageContent) {
console.log("AI消息到达 - aiQuoteMessageContent:", aiQuoteMessageContent);
if (isAiAssist) {
// AI辅助模式填充到输入框等待人工确认
console.log("AI辅助模式填充消息到输入框");
setInputValue(quoteMessageContent);
}
if (isAiTakeover) {
// AI接管模式直接发送消息传入内容避免 state 闭包问题)
console.log("AI接管模式自动发送消息");
handleSend(quoteMessageContent);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [quoteMessageContent, aiQuoteMessageContent, isAiAssist, isAiTakeover]);
const handleKeyPress = (e: React.KeyboardEvent) => {
if (e.key === "Enter" && !e.shiftKey && !e.ctrlKey) {
e.preventDefault();
@@ -353,7 +365,7 @@ const MessageEnter: React.FC<MessageEnterProps> = ({ contract }) => {
<Button
type="primary"
icon={<SendOutlined />}
onClick={handleSend}
onClick={() => handleSend()}
disabled={!inputValue.trim()}
className={styles.sendButton}
>