diff --git a/src/components/chat-view/ChatHistoryView.tsx b/src/components/chat-view/ChatHistoryView.tsx index 3fa63cf..27e6ae6 100644 --- a/src/components/chat-view/ChatHistoryView.tsx +++ b/src/components/chat-view/ChatHistoryView.tsx @@ -1,4 +1,4 @@ -import { CheckSquare, Clock, Edit3, MessageSquare, Pencil, Search, Square, Trash2, CopyPlus } from 'lucide-react' +import { CheckSquare, Clock, CopyPlus, MessageSquare, Pencil, Search, Sparkles, Square, Trash2 } from 'lucide-react' import { Notice } from 'obsidian' import React, { useMemo, useRef, useState } from 'react' @@ -23,6 +23,7 @@ const ChatHistoryView = ({ deleteConversation, updateConversationTitle, chatList, + cleanupOutdatedChats, } = useChatHistory() // search term @@ -37,6 +38,25 @@ const ChatHistoryView = ({ const titleInputRefs = useRef>(new Map()) + const handleCleanup = async () => { + const confirmed = confirm('此操作将永久删除所有对话的历史版本,只保留最新版。这有助于清理数据,但操作不可撤销。确定要继续吗?') + if (!confirmed) { + return + } + + try { + const count = await cleanupOutdatedChats() + if (count > 0) { + new Notice(`成功清理了 ${count} 个过时的对话文件。`) + } else { + new Notice('没有需要清理的对话文件。') + } + } catch (error) { + new Notice('清理失败,请检查开发者控制台获取更多信息。') + console.error('Failed to cleanup outdated chats', error) + } + } + // handle search const handleSearch = (e: React.ChangeEvent) => { setSearchTerm(e.target.value) @@ -192,6 +212,14 @@ const ChatHistoryView = ({

{t('chat.history.title')}

+