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:
@@ -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}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user