From d3395172f881fb60162325c07d758c356ed3bcdc Mon Sep 17 00:00:00 2001 From: Hiep Le <69354317+hieptl@users.noreply.github.com> Date: Thu, 2 Oct 2025 22:18:43 +0700 Subject: [PATCH] fix(frontend): search repos (microagent management) (#11217) --- .../microagent-management-sidebar.tsx | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/features/microagent-management/microagent-management-sidebar.tsx b/frontend/src/components/features/microagent-management/microagent-management-sidebar.tsx index 506971d4cb..b8f6271504 100644 --- a/frontend/src/components/features/microagent-management/microagent-management-sidebar.tsx +++ b/frontend/src/components/features/microagent-management/microagent-management-sidebar.tsx @@ -67,11 +67,27 @@ export function MicroagentManagementSidebar({ setSearchQuery(""); }; + // Helper function to filter repositories by search query + const filterRepositoriesByQuery = ( + inputRepositories: GitRepository[], + query: string, + ): GitRepository[] => { + if (!query.trim()) { + return inputRepositories; + } + + const sanitizedQuery = sanitizeQuery(query); + return inputRepositories.filter((repository: GitRepository) => { + const sanitizedRepoName = sanitizeQuery(repository.full_name); + return sanitizedRepoName.includes(sanitizedQuery); + }); + }; + // Filter repositories based on search query and available data const filteredRepositories = useMemo(() => { - // If we have search results, use them directly (no filtering needed) + // If we have search results, apply client-side filtering for exact matches if (debouncedSearchQuery && searchResults && searchResults.length > 0) { - return searchResults; + return filterRepositoriesByQuery(searchResults, debouncedSearchQuery); } // If no search query or no search results, use paginated repositories @@ -80,17 +96,8 @@ export function MicroagentManagementSidebar({ // Flatten all pages to get all repositories const allRepositories = repositories.pages.flatMap((page) => page.data); - // If no search query, return all repositories - if (!debouncedSearchQuery.trim()) { - return allRepositories; - } - - // Fallback to client-side filtering if search didn't return results - const sanitizedQuery = sanitizeQuery(debouncedSearchQuery); - return allRepositories.filter((repository: GitRepository) => { - const sanitizedRepoName = sanitizeQuery(repository.full_name); - return sanitizedRepoName.includes(sanitizedQuery); - }); + // Apply filtering to paginated repositories + return filterRepositoriesByQuery(allRepositories, debouncedSearchQuery); }, [repositories, debouncedSearchQuery, searchResults]); useEffect(() => {