'use client' import { useParams } from 'common' import { EdgeFunctions } from 'icons' import { Loader2 } from 'lucide-react' import { useMemo } from 'react' import { EmptyState, ResultsList, SkeletonResults, type SearchResult, } from './ContextSearchResults.shared' import { useEdgeFunctionsQuery } from '@/data/edge-functions/edge-functions-query' interface EdgeFunctionSearchResultsProps { query: string } export function EdgeFunctionSearchResults({ query }: EdgeFunctionSearchResultsProps) { const { ref: projectRef } = useParams() const trimmedQuery = query.trim() const { data: functions, isLoading: isLoadingFunctions, isError: isErrorFunctions, } = useEdgeFunctionsQuery( { projectRef, }, { enabled: !!projectRef, } ) const functionResults: SearchResult[] = useMemo(() => { if (!functions) return [] const filtered = trimmedQuery ? functions.filter((func) => { const searchLower = trimmedQuery.toLowerCase() const functionName = func.name?.toLowerCase() || '' const functionSlug = func.slug?.toLowerCase() || '' return functionName.includes(searchLower) || functionSlug.includes(searchLower) }) : functions // Limit results for performance return filtered.slice(0, 20).map((func) => { const displayName = func.name || func.slug || 'Untitled Function' const description = func.version ? `Version ${func.version}` : undefined return { id: String(func.id), name: displayName, description, } }) }, [functions, trimmedQuery]) const totalFunctions = functions?.length ?? 0 const renderFooter = () => (
Failed to load edge functions