diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx index 85b76ef..31826b4 100644 --- a/frontend/src/components/Sidebar.tsx +++ b/frontend/src/components/Sidebar.tsx @@ -156,6 +156,7 @@ function SidebarBody() { // Session management state const [sessions, setSessions] = useState([]); + const [sessionFilter, setSessionFilter] = useState(""); const [renameDialogOpen, setRenameDialogOpen] = useState(false); const [sessionToRename, setSessionToRename] = useState<{key: string, title: string} | null>(null); const [newTitle, setNewTitle] = useState(""); @@ -298,8 +299,19 @@ function SidebarBody() { } }; - const activeSessions = sessions.filter((item) => !item.archived); - const archivedSessions = sessions.filter((item) => !!item.archived); + const normalizedFilter = sessionFilter.trim().toLowerCase(); + const activeSessions = sessions.filter((item) => { + if (item.archived) return false; + if (!normalizedFilter) return true; + const title = (item.metadata?.title || item.key.replace("api:", "")).toLowerCase(); + return title.includes(normalizedFilter); + }); + const archivedSessions = sessions.filter((item) => { + if (!item.archived) return false; + if (!normalizedFilter) return true; + const title = (item.metadata?.title || item.key.replace("api:", "")).toLowerCase(); + return title.includes(normalizedFilter); + }); return (
@@ -311,11 +323,7 @@ function SidebarBody() { 龙虾问数 -
- -
+
@@ -339,6 +347,17 @@ function SidebarBody() {
+
+
+ + setSessionFilter(e.target.value)} + placeholder="过滤会话名称" + className="pl-9 h-9 border-zinc-200 bg-white" + /> +
+