From 4cf4c62a2999198fd1048742296fd80a8b9de1c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=AA=E7=94=B1=E7=9A=84=E4=B8=96=E7=95=8C=E4=BA=BA?= <3196812536@qq.com> Date: Sun, 8 Jun 2025 12:42:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20streamline=20file=20selection=20and=20en?= =?UTF-8?q?sure=20deletion=20of=20topic-related=20f=E2=80=A6=20(#6872)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: streamline file selection and ensure deletion of topic-related files * fix: improve file deletion logic --- src/renderer/src/pages/home/Messages/Messages.tsx | 12 +++++++++++- src/renderer/src/services/FileManager.ts | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/pages/home/Messages/Messages.tsx b/src/renderer/src/pages/home/Messages/Messages.tsx index cae4237ffd..c7b97ae05a 100644 --- a/src/renderer/src/pages/home/Messages/Messages.tsx +++ b/src/renderer/src/pages/home/Messages/Messages.tsx @@ -1,6 +1,7 @@ import SvgSpinners180Ring from '@renderer/components/Icons/SvgSpinners180Ring' import Scrollbar from '@renderer/components/Scrollbar' import { LOAD_MORE_COUNT } from '@renderer/config/constant' +import db from '@renderer/databases' import { useAssistant } from '@renderer/hooks/useAssistant' import { useChatContext } from '@renderer/hooks/useChatContext' import { useMessageOperations, useTopicMessages } from '@renderer/hooks/useMessageOperations' @@ -11,6 +12,7 @@ import { autoRenameTopic, getTopic } from '@renderer/hooks/useTopic' import SelectionBox from '@renderer/pages/home/Messages/SelectionBox' import { getDefaultTopic } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' +import FileManager from '@renderer/services/FileManager' import { getContextCount, getGroupedMessages, getUserMessage } from '@renderer/services/MessagesService' import { estimateHistoryTokens } from '@renderer/services/TokenService' import store, { useAppDispatch } from '@renderer/store' @@ -102,14 +104,22 @@ const Messages: React.FC = ({ assistant, topic, setActiveTopic, o async (data: Topic) => { const defaultTopic = getDefaultTopic(assistant.id) + async function handleTopicRelatedFiles(topicId: string) { + const topicFiles = await db.files.where({ topicId }).toArray() + if (topicFiles.length > 0) { + await Promise.all(topicFiles.map((file) => FileManager.deleteFile(file.id, false))) + } + } + if (data && data.id !== topic.id) { await clearTopicMessages(data.id) + await handleTopicRelatedFiles(data.id) updateTopic({ ...data, name: defaultTopic.name } as Topic) return } await clearTopicMessages() - + await handleTopicRelatedFiles(topic.id) setDisplayMessages([]) const _topic = getTopic(assistant, topic.id) diff --git a/src/renderer/src/services/FileManager.ts b/src/renderer/src/services/FileManager.ts index beda045a81..c76254a74c 100644 --- a/src/renderer/src/services/FileManager.ts +++ b/src/renderer/src/services/FileManager.ts @@ -8,8 +8,7 @@ import dayjs from 'dayjs' class FileManager { static async selectFiles(options?: Electron.OpenDialogOptions): Promise { - const files = await window.api.file.select(options) - return files + return await window.api.file.select(options) } static async addFile(file: FileType): Promise {