diff --git a/src/App.jsx b/src/App.jsx index 02c95d8..859b36b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -139,6 +139,7 @@ export default function App() { const [activeSidebarMode, setActiveSidebarMode] = useState('chats') // 'chats', 'dbs', 'settings' const [activeSettingsSubmenu, setActiveSettingsSubmenu] = useState('General'); // 'General', 'Interface' const [editingSessionId, setEditingSessionId] = useState(null); // ID of the session being edited + const [editingLibrarySlug, setEditingLibrarySlug] = useState(null) const [libraries, setLibraries] = useState([]) const [libraryJobs, setLibraryJobs] = useState([]) const [activeLibrarySlug, setActiveLibrarySlug] = useState(null) @@ -1468,6 +1469,33 @@ async function createNewChat() { }); } + function handleLibraryRename(slug, newName) { + const name = (newName || '').trim() + const library = libraries.find(item => item.slug === slug) + if (!library) { + setEditingLibrarySlug(null) + return + } + if (!name || name === library.name) { + setEditingLibrarySlug(null) + return + } + + fetch(`${ollamaApiUrl}/libraries/${slug}`, { + method: 'PATCH', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ name }) + }) + .then(() => { + setLibraries(prevLibraries => + prevLibraries.map(item => + item.slug === slug ? { ...item, name } : item + ) + ) + setEditingLibrarySlug(null) + }) + } + function handleDelete(sessionId) { fetch(`${ollamaApiUrl}/sessions/${sessionId}`, { method: 'DELETE' }) .then(() => { @@ -1584,9 +1612,33 @@ async function createNewChat() { className={`chat-item ${library.slug === activeLibrarySlug ? 'active' : ''}`} onClick={() => setActiveLibrarySlug(library.slug)} > - {library.name} - {chatLibrarySlug === library.slug &&
Chat
} - {pendingChatLibrarySlug === library.slug &&
Preparing
} + {editingLibrarySlug === library.slug ? ( + setEditingLibrarySlug(null)} + onKeyDown={(e) => { + if (e.key === 'Enter') { + handleLibraryRename(library.slug, e.target.value) + } else if (e.key === 'Escape') { + setEditingLibrarySlug(null) + } + }} + autoFocus + /> + ) : ( + <> + {library.name} +
+ {chatLibrarySlug === library.slug &&
Chat
} + {pendingChatLibrarySlug === library.slug &&
Preparing
} + +
+ + )} )) )}