import { useState, useEffect, useCallback, useRef } from 'react'; import { searchApi } from '../lib/api'; export default function useSearch() { const [query, setQuery] = useState(''); const [results, setResults] = useState([]); const [loading, setLoading] = useState(false); const debounceRef = useRef(null); const clear = useCallback(() => { setQuery(''); setResults([]); setLoading(false); }, []); useEffect(() => { if (debounceRef.current) { clearTimeout(debounceRef.current); } const trimmed = query.trim(); if (!trimmed) { setResults([]); setLoading(false); return; } setLoading(true); debounceRef.current = setTimeout(async () => { try { const data = await searchApi(trimmed); setResults(data || []); } catch (err) { console.error('[useSearch] error:', err.message); setResults([]); } finally { setLoading(false); } }, 300); return () => { if (debounceRef.current) clearTimeout(debounceRef.current); }; }, [query]); return { query, setQuery, results, loading, clear }; }