From 59a50c346b966e5dc64a12546110489aea95d123 Mon Sep 17 00:00:00 2001 From: Tristan Zhang <82869104+ABucket@users.noreply.github.com> Date: Tue, 14 Oct 2025 21:52:23 +0800 Subject: [PATCH] fix: move handling to topics onClearMessages --- .../src/pages/home/Tabs/components/Topics.tsx | 25 +++++++++++++++---- src/renderer/src/store/thunk/messageThunk.ts | 18 +------------ 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/renderer/src/pages/home/Tabs/components/Topics.tsx b/src/renderer/src/pages/home/Tabs/components/Topics.tsx index d7214ff450..0cd627f6dc 100644 --- a/src/renderer/src/pages/home/Tabs/components/Topics.tsx +++ b/src/renderer/src/pages/home/Tabs/components/Topics.tsx @@ -127,11 +127,26 @@ export const Topics: React.FC = ({ assistant: _assistant, activeTopic, se deleteTimerRef.current = setTimeout(() => setDeletingTopicId(null), 2000) }, []) - const onClearMessages = useCallback((topic: Topic) => { - // window.keyv.set(EVENT_NAMES.CHAT_COMPLETION_PAUSED, true) - store.dispatch(setGenerating(false)) - EventEmitter.emit(EVENT_NAMES.CLEAR_MESSAGES, topic) - }, []) + const onClearMessages = useCallback( + (topic: Topic) => { + // window.keyv.set(EVENT_NAMES.CHAT_COMPLETION_PAUSED, true) + store.dispatch(setGenerating(false)) + EventEmitter.emit(EVENT_NAMES.CLEAR_MESSAGES, topic) + + if (assistant.topics.length === 1) { + const updatedTopic = { + ...topic, + name: t('chat.default.topic.name'), + isNameManuallyEdited: false + } + updateTopic(updatedTopic) + if (topic.id === activeTopic.id) { + setActiveTopic(updatedTopic) + } + } + }, + [assistant.topics.length, t, updateTopic, activeTopic.id, setActiveTopic] + ) const handleConfirmDelete = useCallback( async (topic: Topic, e: React.MouseEvent) => { diff --git a/src/renderer/src/store/thunk/messageThunk.ts b/src/renderer/src/store/thunk/messageThunk.ts index 6eac609564..50efd8e83a 100644 --- a/src/renderer/src/store/thunk/messageThunk.ts +++ b/src/renderer/src/store/thunk/messageThunk.ts @@ -11,7 +11,7 @@ import { transformMessagesAndFetch } from '@renderer/services/OrchestrateService import { endSpan } from '@renderer/services/SpanManagerService' import { createStreamProcessor, type StreamProcessorCallbacks } from '@renderer/services/StreamProcessingService' import store from '@renderer/store' -import { updateTopic, updateTopicUpdatedAt } from '@renderer/store/assistants' +import { updateTopicUpdatedAt } from '@renderer/store/assistants' import { type ApiServerConfig, type Assistant, type FileMetadata, type Model, type Topic } from '@renderer/types' import type { AgentSessionEntity, GetAgentSessionResponse } from '@renderer/types/agent' import { ChunkType } from '@renderer/types/chunk' @@ -1039,22 +1039,6 @@ export const clearTopicMessagesThunk = dispatch(newMessagesActions.clearTopicMessages(topicId)) cleanupMultipleBlocks(dispatch, blockIdsToDelete) await clearMessagesFromDBV2(topicId) - - const assistants = state.assistants.assistants - for (const assistant of assistants) { - const topic = assistant.topics.find((t) => t.id === topicId) - if (topic) { - if (assistant.topics.length === 1) { - const updatedTopic = { - ...topic, - name: t('chat.default.topic.name'), - isNameManuallyEdited: false - } - dispatch(updateTopic({ assistantId: assistant.id, topic: updatedTopic })) - } - break - } - } } catch (error) { logger.error(`[clearTopicMessagesThunk] Failed to clear messages for topic ${topicId}:`, error as Error) }