import { keepPreviousData, useQuery, UseQueryResult } from "@tanstack/react-query"; import { searchAttachments, searchPage, searchShare, searchSuggestions, } from '@/features/search/services/search-service'; import { IAttachmentSearch, IPageSearch, IPageSearchParams, ISuggestionResult, SearchSuggestionParams, } from '@/features/search/types/search.types'; export function usePageSearchQuery( params: IPageSearchParams, ): UseQueryResult { return useQuery({ queryKey: ["page-search", params], queryFn: () => searchPage(params), enabled: !!params.query, }); } export function useSearchSuggestionsQuery( params: SearchSuggestionParams & { preload?: boolean }, ): UseQueryResult { const { preload, ...queryParams } = params; return useQuery({ queryKey: ["search-suggestion", params.query], staleTime: 60 * 1000, // 1min queryFn: () => searchSuggestions(queryParams), enabled: preload || !!params.query, placeholderData: keepPreviousData, }); } export function useShareSearchQuery( params: IPageSearchParams, ): UseQueryResult { return useQuery({ queryKey: ["share-search", params], queryFn: () => searchShare(params), enabled: !!params.query, }); } export function useAttachmentSearchQuery( params: IPageSearchParams, ): UseQueryResult { return useQuery({ queryKey: ["attachment-search", params], queryFn: () => searchAttachments(params), enabled: !!params.query, }); }