优化消息实时响应结束后的处理逻辑,不再立即重新加载本地数据
This commit is contained in:
@@ -111,8 +111,7 @@ const ExistingConversationView = memo(function ExistingConversationView({
|
|||||||
// Wrap handleSend to update status
|
// Wrap handleSend to update status
|
||||||
const handleSendWithPersist = useCallback(
|
const handleSendWithPersist = useCallback(
|
||||||
(draft: PromptDraft, selectedModeId?: string | null) => {
|
(draft: PromptDraft, selectedModeId?: string | null) => {
|
||||||
setPendingMessages((prev) => [
|
setPendingMessages([
|
||||||
...prev,
|
|
||||||
{
|
{
|
||||||
id: `pending-${Date.now()}`,
|
id: `pending-${Date.now()}`,
|
||||||
role: "user",
|
role: "user",
|
||||||
|
|||||||
@@ -213,17 +213,12 @@ export function MessageListView({
|
|||||||
}: MessageListViewProps) {
|
}: MessageListViewProps) {
|
||||||
const t = useTranslations("Folder.chat.messageList")
|
const t = useTranslations("Folder.chat.messageList")
|
||||||
const sharedT = useTranslations("Folder.chat.shared")
|
const sharedT = useTranslations("Folder.chat.shared")
|
||||||
const { detail, loading, error, refetch } = useDbMessageDetail(conversationId)
|
const { detail, loading, error } = useDbMessageDetail(conversationId)
|
||||||
const turnCount = detail?.turns.length ?? 0
|
const turnCount = detail?.turns.length ?? 0
|
||||||
|
|
||||||
const prevStatusRef = useRef(connStatus)
|
// 移除了 prompting 结束后的立即刷新
|
||||||
useEffect(() => {
|
// 原因:后端自动持久化可能有延迟,立即刷新会读到不完整数据
|
||||||
const prev = prevStatusRef.current
|
// 现在通过清空 pending 来避免累积问题,等用户切换会话或手动刷新时再加载
|
||||||
prevStatusRef.current = connStatus
|
|
||||||
if (prev === "prompting" && connStatus && connStatus !== "prompting") {
|
|
||||||
refetch()
|
|
||||||
}
|
|
||||||
}, [connStatus, refetch])
|
|
||||||
|
|
||||||
const prevTurnCountRef = useRef(turnCount)
|
const prevTurnCountRef = useRef(turnCount)
|
||||||
const prevConvIdRef = useRef(conversationId)
|
const prevConvIdRef = useRef(conversationId)
|
||||||
|
|||||||
Reference in New Issue
Block a user