diff --git a/web/src/hooks/useApiRequest.js b/web/src/hooks/useApiRequest.js index 1eaefea4..bbe49eac 100644 --- a/web/src/hooks/useApiRequest.js +++ b/web/src/hooks/useApiRequest.js @@ -115,9 +115,9 @@ export const useApiRequest = ( } ]; - // 在消息完成时保存 + // 在消息完成时保存,传入更新后的消息列表 if (status === MESSAGE_STATUS.COMPLETE || status === MESSAGE_STATUS.ERROR) { - setTimeout(() => saveMessages(), 0); + setTimeout(() => saveMessages(updatedMessages), 0); } return updatedMessages; @@ -375,8 +375,8 @@ export const useApiRequest = ( } ]; - // 停止生成时也保存 - setTimeout(() => saveMessages(), 0); + // 停止生成时也保存,传入更新后的消息列表 + setTimeout(() => saveMessages(updatedMessages), 0); return updatedMessages; } diff --git a/web/src/hooks/useMessageActions.js b/web/src/hooks/useMessageActions.js index 3f9ddc09..8de65fa7 100644 --- a/web/src/hooks/useMessageActions.js +++ b/web/src/hooks/useMessageActions.js @@ -164,8 +164,8 @@ export const useMessageActions = (message, setMessage, onMessageSend, saveMessag updatedMessages = prevMessages.filter(msg => msg.id !== targetMessage.id); } - // 删除消息后保存 - setTimeout(() => saveMessages(), 0); + // 删除消息后保存,传入更新后的消息列表 + setTimeout(() => saveMessages(updatedMessages), 0); return updatedMessages; }); }, @@ -189,8 +189,8 @@ export const useMessageActions = (message, setMessage, onMessageSend, saveMessag return msg; }); - // 切换角色后保存 - setTimeout(() => saveMessages(), 0); + // 切换角色后保存,传入更新后的消息列表 + setTimeout(() => saveMessages(updatedMessages), 0); return updatedMessages; }); diff --git a/web/src/hooks/useMessageEdit.js b/web/src/hooks/useMessageEdit.js index c41c735a..3f32f8fe 100644 --- a/web/src/hooks/useMessageEdit.js +++ b/web/src/hooks/useMessageEdit.js @@ -57,8 +57,8 @@ export const useMessageEdit = ( onOk: () => { const messagesUntilUser = updatedMessages.slice(0, messageIndex + 1); setMessage(messagesUntilUser); - // 编辑后保存(重新生成的情况) - setTimeout(() => saveMessages(), 0); + // 编辑后保存(重新生成的情况),传入更新后的消息列表 + setTimeout(() => saveMessages(messagesUntilUser), 0); setTimeout(() => { const payload = buildApiPayload(messagesUntilUser, null, inputs, parameterEnabled); @@ -68,16 +68,16 @@ export const useMessageEdit = ( }, onCancel: () => { setMessage(updatedMessages); - // 编辑后保存(仅保存的情况) - setTimeout(() => saveMessages(), 0); + // 编辑后保存(仅保存的情况),传入更新后的消息列表 + setTimeout(() => saveMessages(updatedMessages), 0); } }); return prevMessages; } } - // 编辑后保存(普通情况) - setTimeout(() => saveMessages(), 0); + // 编辑后保存(普通情况),传入更新后的消息列表 + setTimeout(() => saveMessages(updatedMessages), 0); return updatedMessages; }); diff --git a/web/src/hooks/usePlaygroundState.js b/web/src/hooks/usePlaygroundState.js index a974fde6..47a77208 100644 --- a/web/src/hooks/usePlaygroundState.js +++ b/web/src/hooks/usePlaygroundState.js @@ -64,9 +64,10 @@ export const usePlaygroundState = () => { })); }, []); - // 消息保存函数 - 改为立即保存 - const saveMessagesImmediately = useCallback(() => { - saveMessages(message); + // 消息保存函数 - 改为立即保存,可以接受参数 + const saveMessagesImmediately = useCallback((messagesToSave) => { + // 如果提供了参数,使用参数;否则使用当前状态 + saveMessages(messagesToSave || message); }, [message]); // 配置保存 @@ -190,7 +191,7 @@ export const usePlaygroundState = () => { handleInputChange, handleParameterToggle, debouncedSaveConfig, - saveMessagesImmediately, // 改为导出立即保存函数 + saveMessagesImmediately, handleConfigImport, handleConfigReset, }; diff --git a/web/src/pages/Playground/index.js b/web/src/pages/Playground/index.js index 933651da..66a27bad 100644 --- a/web/src/pages/Playground/index.js +++ b/web/src/pages/Playground/index.js @@ -214,8 +214,8 @@ const Playground = () => { // 发送自定义请求体 sendRequest(customPayload, customPayload.stream !== false); - // 发送消息后保存 - setTimeout(() => saveMessagesImmediately(), 0); + // 发送消息后保存,传入新消息列表 + setTimeout(() => saveMessagesImmediately(newMessages), 0); return newMessages; }); @@ -245,10 +245,11 @@ const Playground = () => { }, 100); } - // 发送消息后保存 - setTimeout(() => saveMessagesImmediately(), 0); + // 发送消息后保存,传入新消息列表(包含用户消息和加载消息) + const messagesWithLoading = [...newMessages, loadingMessage]; + setTimeout(() => saveMessagesImmediately(messagesWithLoading), 0); - return [...newMessages, loadingMessage]; + return messagesWithLoading; }); } @@ -362,8 +363,8 @@ const Playground = () => { // 清空对话的处理函数 const handleClearMessages = useCallback(() => { setMessage([]); - // 清空对话后保存 - setTimeout(() => saveMessagesImmediately(), 0); + // 清空对话后保存,传入空数组 + setTimeout(() => saveMessagesImmediately([]), 0); }, [setMessage, saveMessagesImmediately]); return (