Spaces:
Running
Running
import { useState, useCallback } from 'react'; | |
import { searchQuery as searchQueryApi } from '../services/search'; | |
import { useAuth } from './useAuth'; | |
export const useSearch = () => { | |
const { authTokens } = useAuth(); | |
const [results, setResults] = useState([]); | |
const [isLoading, setIsLoading] = useState(false); | |
const [error, setError] = useState(null); | |
const [searchQuery, setSearchQuery] = useState(''); | |
const handleSearch = useCallback(async (query) => { | |
if (!query.trim()) { | |
setResults([]); | |
return; | |
} | |
setSearchQuery(query); | |
setIsLoading(true); | |
setError(null); | |
try { | |
const searchResults = await searchQueryApi(query, authTokens.access); | |
setResults(searchResults); | |
} catch (err) { | |
setError(err.message || 'Failed to perform search'); | |
setResults([]); | |
} finally { | |
setIsLoading(false); | |
} | |
}, [authTokens.access]); | |
const clearResults = useCallback(() => { | |
setResults([]); | |
setError(null); | |
}, []); | |
return { | |
results, | |
isLoading, | |
error, | |
handleSearch, | |
clearResults, | |
searchQuery, | |
}; | |
}; |