From 58b0d4dae65ced038ad7ed1a74b87e15cd4f8782 Mon Sep 17 00:00:00 2001 From: anoop Date: Thu, 30 Oct 2025 16:51:07 +0530 Subject: [PATCH] fix: search in collections --- src/pages/Collections.jsx | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/pages/Collections.jsx b/src/pages/Collections.jsx index 79f21e373..8f922d4e0 100644 --- a/src/pages/Collections.jsx +++ b/src/pages/Collections.jsx @@ -14,6 +14,7 @@ import CreateCollectionButton from '../components/Collections/CreateCollection/C function Collections() { const [rawCollections, setRawCollections] = useState(null); const [collections, setCollections] = useState(null); + const [filteredCollections, setFilteredCollections] = useState(null); const [searchQuery, setSearchQuery] = useState(''); const [errorMessage, setErrorMessage] = useState(null); const { client: qdrantClient } = useClient(); @@ -65,14 +66,14 @@ function Collections() { [qdrantClient, getErrorMessageWithApiKey] ); - const getFilteredCollections = useCallback( + const getFilteredCollectionsCall = useCallback( async (query) => { try { if (!collections) return; - const filteredCollections = collections.filter((collection) => collection.name.match(query)); - setCollections(filteredCollections); + const filtered = collections.filter((collection) => collection.name.match(query)); + setFilteredCollections(filtered); const nextRawCollections = await Promise.all( - filteredCollections.map(async (collection) => { + filtered.map(async (collection) => { const collectionData = await qdrantClient.getCollection(collection.name); return { name: collection.name, @@ -100,19 +101,21 @@ function Collections() { if (!searchQuery) { getCollectionsCall(currentPage); } else { - debouncedGetFilteredCollections(searchQuery); + debouncedGetFilteredCollectionsCall(searchQuery); } }, [searchQuery, currentPage, getCollectionsCall]); - const debouncedGetFilteredCollections = useMemo( - () => debounce(getFilteredCollections, 100), - [getFilteredCollections] + const debouncedGetFilteredCollectionsCall = useMemo( + () => debounce(getFilteredCollectionsCall, 100), + [getFilteredCollectionsCall] ); const handlePageChange = (event, value) => { setCurrentPage(value); }; + const displayCollections = searchQuery ? filteredCollections : collections; + return ( <> @@ -126,7 +129,8 @@ function Collections() { }} > - Collections {maxCollections && collections ? `(${collections.length} / ${maxCollections})` : ''} + Collections{' '} + {maxCollections && displayCollections ? `(${displayCollections.length} / ${maxCollections})` : ''} ⚠ Error: {errorMessage} )} - {!collections && !errorMessage && ( + {!displayCollections && !errorMessage && ( )} - {collections && !errorMessage && collections.length === 0 && ( + {displayCollections && !errorMessage && displayCollections.length === 0 && ( 📪 No collection is present @@ -167,11 +171,11 @@ function Collections() { collections={rawCollections} getCollectionsCall={() => getCollectionsCall(currentPage)} /> - {collections.length > PAGE_SIZE && ( + {displayCollections && displayCollections.length > PAGE_SIZE && (