/** * Companies List Query Hook * * Fetches paginated list of companies using TanStack Query. * Replaces CompanyRepository + GetCompaniesUseCase pattern. * * @layer Presentation - Hooks */ import { useQuery } from '@tanstack/react-query'; import { companiesApi } from '@/infrastructure/http/api/company'; import { queryKeys } from '@/lib/query-keys'; import type { ListParams } from '@/infrastructure/http/api/shared/types'; /** * useCompanies * * Fetches and caches paginated list of companies. * * @param params - Optional pagination and filter parameters * @returns Query result with companies array, pagination metadata, loading, and error states * * @example * ```typescript * function CompanyList() { * const { data, isLoading, error } = useCompanies({ page: 1, limit: 10 }); * * if (isLoading) return ; * if (error) return ; * if (!data) return null; * * return ( * <> * {data.companies.map(company => )} * * * ); * } * ``` */ export function useCompanies(params?: ListParams) { return useQuery({ queryKey: queryKeys.companies.list(params), queryFn: async () => { const result = await companiesApi.listCompanies(params); return result; }, staleTime: 5 * 60 * 1000, // 5 minutes }); }