import instance from '@/config/instance/instance'; import { buildQueryString } from '@/utils/storage'; import { useQuery, UseQueryOptions } from '@tanstack/react-query'; const useFetchData = >({ url, params = {} as TParams, queryOptions = {}, enabled = true }: { url: string; params?: TParams; queryOptions?: Omit< UseQueryOptions, 'queryKey' | 'queryFn' >; enabled?: boolean; }) => { return useQuery({ queryKey: [url, params], queryFn: async (): Promise => { const queryString = buildQueryString(params as Record); const response = await instance.get({ url: `${url}${queryString}`, }); if (response?.statusCode === 200) { return response.data as TData; } throw new Error(response?.message || 'Failed to fetch data'); }, retry: 1, refetchOnWindowFocus: false, enabled: enabled, staleTime: 0, ...queryOptions }); }; export default useFetchData;