fix: 修复占位图逻辑和移除导致错误的刷新
1. 移除 onFinish 中的 router.refresh(),它导致 React 错误 2. 简化占位图逻辑:hasImageContent 优先级最高 3. 当有图片内容时,无论其他标记如何,都隐藏占位图 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
096faa257a
commit
3737b1ce99
@ -356,13 +356,7 @@ export function Chat({
|
||||
// 🆕 生成完成,清除持久化状态
|
||||
completeGeneration();
|
||||
console.log("[Chat] onFinish called");
|
||||
|
||||
// 🆕 刷新页面获取最新消息,确保 data-appendMessage 添加的消息不会丢失
|
||||
// 延迟执行以确保所有状态更新完成
|
||||
setTimeout(() => {
|
||||
console.log("[Chat] Refreshing to sync messages from database");
|
||||
router.refresh();
|
||||
}, 500);
|
||||
// 🆕 移除 router.refresh(),因为它会导致 React 错误和消息丢失
|
||||
},
|
||||
onError: (error) => {
|
||||
if (error instanceof ChatSDKError) {
|
||||
|
||||
@ -229,24 +229,26 @@ function PureMessages({
|
||||
status,
|
||||
});
|
||||
|
||||
// 🆕 关键修复:当 isGeneratingImageFlag 为 true 时,优先显示占位图
|
||||
// 因为这表示后端正在生成图片,即使检测到旧的图片内容也不应该隐藏占位图
|
||||
if (isGeneratingImageFlag) {
|
||||
console.log("[Messages useEffect] isGeneratingImageFlag=true,强制显示占位图");
|
||||
setShowThinkingWithDelay(true);
|
||||
} else if (hasImageContent && !isGeneratingImage) {
|
||||
// 只有当 isGeneratingImageFlag 为 false 且有图片内容时,才考虑隐藏占位图
|
||||
// 🆕 简化的占位图逻辑
|
||||
// 优先级:hasImageContent > isGeneratingImageFlag > isGeneratingImage > status
|
||||
|
||||
if (hasImageContent) {
|
||||
// 图片已生成,延迟后隐藏占位图(无论其他标记如何)
|
||||
console.log("[Messages useEffect] 图片已生成,延迟后隐藏");
|
||||
const timer = setTimeout(() => {
|
||||
setShowThinkingWithDelay(false);
|
||||
}, delayTime);
|
||||
return () => clearTimeout(timer);
|
||||
} else if (isGeneratingImageFlag) {
|
||||
// 后端正在生成图片
|
||||
console.log("[Messages useEffect] isGeneratingImageFlag=true,显示占位图");
|
||||
setShowThinkingWithDelay(true);
|
||||
} else if (isGeneratingImage) {
|
||||
// 消息中检测到 GENERATING_IMAGE 标记
|
||||
// 消息中检测到 GENERATING_IMAGE 标记(但没有图片内容)
|
||||
console.log("[Messages useEffect] 检测到消息中的生成标记,显示占位图");
|
||||
setShowThinkingWithDelay(true);
|
||||
} else if (status === "streaming" || status === "submitted") {
|
||||
// 正在处理中(分析意图或流式传输),显示占位图
|
||||
// 正在处理中(分析意图或流式传输)
|
||||
console.log("[Messages useEffect] streaming/submitted,显示占位图");
|
||||
setShowThinkingWithDelay(true);
|
||||
} else {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user