41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import { useState } from "react";
|
|
import { useQuery } from "@tanstack/react-query";
|
|
import { EmailSuggestionsService } from "@/services/EmailSuggestionsService";
|
|
|
|
export const useEmailSuggestions = () => {
|
|
const [debouncedQuery, setDebouncedQuery] = useState("");
|
|
|
|
const { data: suggestionsData, isLoading, error } = useQuery({
|
|
queryKey: ["emailSuggestions", debouncedQuery],
|
|
queryFn: () =>
|
|
EmailSuggestionsService.getSuggestions({
|
|
query: debouncedQuery,
|
|
limit: 5,
|
|
}),
|
|
enabled: debouncedQuery.length >= 2,
|
|
staleTime: 1000 * 60 * 5, // 5 minutes
|
|
});
|
|
|
|
if (error) {
|
|
console.error("🔥 Query error:", error);
|
|
}
|
|
|
|
const searchSuggestions = (query: string) => {
|
|
// Debounce the actual search
|
|
const timeoutId = setTimeout(() => {
|
|
setDebouncedQuery(query);
|
|
}, 300);
|
|
|
|
return () => clearTimeout(timeoutId);
|
|
};
|
|
|
|
const suggestions = suggestionsData?.suggestions || [];
|
|
|
|
return {
|
|
suggestions,
|
|
searchSuggestions,
|
|
isLoading,
|
|
hasResults: suggestions.length > 0,
|
|
};
|
|
};
|