/**
* 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
});
}