mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-06 05:09:09 +08:00
fix: streamline file selection and ensure deletion of topic-related f… (#6872)
* fix: streamline file selection and ensure deletion of topic-related files * fix: improve file deletion logic
This commit is contained in:
parent
f9e557763e
commit
df35f25502
@ -1,6 +1,7 @@
|
|||||||
import SvgSpinners180Ring from '@renderer/components/Icons/SvgSpinners180Ring'
|
import SvgSpinners180Ring from '@renderer/components/Icons/SvgSpinners180Ring'
|
||||||
import Scrollbar from '@renderer/components/Scrollbar'
|
import Scrollbar from '@renderer/components/Scrollbar'
|
||||||
import { LOAD_MORE_COUNT } from '@renderer/config/constant'
|
import { LOAD_MORE_COUNT } from '@renderer/config/constant'
|
||||||
|
import db from '@renderer/databases'
|
||||||
import { useAssistant } from '@renderer/hooks/useAssistant'
|
import { useAssistant } from '@renderer/hooks/useAssistant'
|
||||||
import { useChatContext } from '@renderer/hooks/useChatContext'
|
import { useChatContext } from '@renderer/hooks/useChatContext'
|
||||||
import { useMessageOperations, useTopicMessages } from '@renderer/hooks/useMessageOperations'
|
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 SelectionBox from '@renderer/pages/home/Messages/SelectionBox'
|
||||||
import { getDefaultTopic } from '@renderer/services/AssistantService'
|
import { getDefaultTopic } from '@renderer/services/AssistantService'
|
||||||
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
|
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
|
||||||
|
import FileManager from '@renderer/services/FileManager'
|
||||||
import { getContextCount, getGroupedMessages, getUserMessage } from '@renderer/services/MessagesService'
|
import { getContextCount, getGroupedMessages, getUserMessage } from '@renderer/services/MessagesService'
|
||||||
import { estimateHistoryTokens } from '@renderer/services/TokenService'
|
import { estimateHistoryTokens } from '@renderer/services/TokenService'
|
||||||
import store, { useAppDispatch } from '@renderer/store'
|
import store, { useAppDispatch } from '@renderer/store'
|
||||||
@ -102,14 +104,22 @@ const Messages: React.FC<MessagesProps> = ({ assistant, topic, setActiveTopic, o
|
|||||||
async (data: Topic) => {
|
async (data: Topic) => {
|
||||||
const defaultTopic = getDefaultTopic(assistant.id)
|
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) {
|
if (data && data.id !== topic.id) {
|
||||||
await clearTopicMessages(data.id)
|
await clearTopicMessages(data.id)
|
||||||
|
await handleTopicRelatedFiles(data.id)
|
||||||
updateTopic({ ...data, name: defaultTopic.name } as Topic)
|
updateTopic({ ...data, name: defaultTopic.name } as Topic)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
await clearTopicMessages()
|
await clearTopicMessages()
|
||||||
|
await handleTopicRelatedFiles(topic.id)
|
||||||
setDisplayMessages([])
|
setDisplayMessages([])
|
||||||
|
|
||||||
const _topic = getTopic(assistant, topic.id)
|
const _topic = getTopic(assistant, topic.id)
|
||||||
|
|||||||
@ -8,8 +8,7 @@ import dayjs from 'dayjs'
|
|||||||
|
|
||||||
class FileManager {
|
class FileManager {
|
||||||
static async selectFiles(options?: Electron.OpenDialogOptions): Promise<FileType[] | null> {
|
static async selectFiles(options?: Electron.OpenDialogOptions): Promise<FileType[] | null> {
|
||||||
const files = await window.api.file.select(options)
|
return await window.api.file.select(options)
|
||||||
return files
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static async addFile(file: FileType): Promise<FileType> {
|
static async addFile(file: FileType): Promise<FileType> {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user