import { useEffect, useRef, useState } from 'react' export default function ChatDatabasePicker({ activeSessionId, chatLibrary, chatLibrarySlug, chatLibraryStatusSuffix, isLibrarySyncing, libraries, setChatLibraryForSession, }) { const dbPickerRef = useRef(null) const [isDbPickerOpen, setIsDbPickerOpen] = useState(false) useEffect(() => { if (!isDbPickerOpen) return const onPointerDown = (event) => { if (!dbPickerRef.current?.contains(event.target)) { setIsDbPickerOpen(false) } } document.addEventListener('mousedown', onPointerDown) return () => document.removeEventListener('mousedown', onPointerDown) }, [isDbPickerOpen]) useEffect(() => { setIsDbPickerOpen(false) }, [activeSessionId]) return (
{isDbPickerOpen && (
{libraries.length === 0 ? (
No databases yet.
) : ( libraries.map(library => { const selected = chatLibrarySlug === library.slug const syncing = isLibrarySyncing(library.slug) const status = !library.files?.length ? 'Empty' : library.states?.is_indexed ? 'Ready' : syncing ? 'Syncing' : 'Needs sync' return ( ) }) )}
)}
) }