forked from refinedev/refine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
useList.ts
36 lines (31 loc) · 994 Bytes
/
useList.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { useContext } from "react";
import { QueryObserverResult, useQuery, UseQueryOptions } from "react-query";
import { DataContext } from "@contexts/data";
import {
GetListResponse,
IDataContext,
Sort,
Search,
CrudFilters,
Pagination,
BaseRecord,
} from "../../interfaces";
interface UseListConfig {
pagination?: Pagination;
search?: Search;
sort?: Sort;
filters?: CrudFilters;
}
export const useList = <RecordType = BaseRecord>(
resource: string,
config?: UseListConfig,
queryOptions?: UseQueryOptions<GetListResponse<RecordType>>,
): QueryObserverResult<GetListResponse<RecordType>, unknown> => {
const { getList } = useContext<IDataContext>(DataContext);
const queryResponse = useQuery<GetListResponse<RecordType>>(
[`resource/list/${resource}`, { ...config }],
() => getList<RecordType>(resource, { ...config }),
queryOptions ?? { keepPreviousData: true },
);
return queryResponse;
};