@ventlio/tanstack-query 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/src/model/index.ts
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
export const useKeyTrackerModel = <T>(keyTracker: string) => {
|
|
5
|
+
const queryClient = useQueryClient();
|
|
6
|
+
const [data, setData] = useState<T>();
|
|
7
|
+
const [queryKey, setQueryKey] = useState<any[] | undefined>();
|
|
8
|
+
|
|
9
|
+
const getQueryKey = (innerKeyTracker?: string) => {
|
|
10
|
+
const key: any[] | undefined = queryClient.getQueryData([
|
|
11
|
+
innerKeyTracker ?? keyTracker,
|
|
12
|
+
]);
|
|
13
|
+
setQueryKey(key);
|
|
14
|
+
return key;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const refetchQuery = (innerKeyTracker?: string) => {
|
|
18
|
+
const key: any = getQueryKey(innerKeyTracker ?? keyTracker);
|
|
19
|
+
|
|
20
|
+
const queryData = queryClient.getQueryData<T>(key);
|
|
21
|
+
|
|
22
|
+
setData(queryData);
|
|
23
|
+
|
|
24
|
+
return queryData;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
return { refetchQuery, getQueryKey, queryKey, data };
|
|
28
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
|
|
3
|
+
export const useRefetchQuery = async (queryKey: any[]) => {
|
|
4
|
+
const queryClient = useQueryClient();
|
|
5
|
+
|
|
6
|
+
const refetchQuery = async <T>(innerQueryKey?: any[]) => {
|
|
7
|
+
await queryClient.refetchQueries(
|
|
8
|
+
{
|
|
9
|
+
queryKey,
|
|
10
|
+
exact: true,
|
|
11
|
+
type: 'active',
|
|
12
|
+
},
|
|
13
|
+
{ throwOnError: true, cancelRefetch: true }
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
return queryClient.getQueriesData<T>(innerQueryKey ?? queryKey);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return { refetchQuery };
|
|
20
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { UseQueryOptions } from '@tanstack/react-query';
|
|
2
|
-
import { useQuery } from '@tanstack/react-query';
|
|
3
|
-
import { startTransition, useEffect, useState } from 'react';
|
|
2
|
+
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
3
|
+
import { startTransition, useEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { useQueryConfig } from '../config';
|
|
5
5
|
import type { IRequestError, IRequestSuccess } from '../request';
|
|
6
6
|
import { makeRequest } from '../request';
|
|
@@ -10,10 +10,12 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
10
10
|
path,
|
|
11
11
|
load = false,
|
|
12
12
|
queryOptions,
|
|
13
|
+
keyTracker,
|
|
13
14
|
}: {
|
|
14
15
|
path: string;
|
|
15
16
|
load?: boolean;
|
|
16
17
|
queryOptions?: TanstackQueryOption<TResponse>;
|
|
18
|
+
keyTracker?: string;
|
|
17
19
|
}) => {
|
|
18
20
|
const [requestPath, updatePath] = useState<string>(path);
|
|
19
21
|
const [options, setOptions] = useState<any>(queryOptions);
|
|
@@ -21,6 +23,10 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
21
23
|
|
|
22
24
|
const { headers, baseURL, timeout } = useQueryConfig();
|
|
23
25
|
|
|
26
|
+
let queryClient = useQueryClient();
|
|
27
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
28
|
+
queryClient = useMemo(() => queryClient, []);
|
|
29
|
+
|
|
24
30
|
const sendRequest = async (
|
|
25
31
|
res: (
|
|
26
32
|
value:
|
|
@@ -61,6 +67,12 @@ export const useGetRequest = <TResponse extends Record<string, any>>({
|
|
|
61
67
|
}
|
|
62
68
|
}, [path]);
|
|
63
69
|
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
if (keyTracker) {
|
|
72
|
+
queryClient.setQueryData([keyTracker], [requestPath, {}]);
|
|
73
|
+
}
|
|
74
|
+
}, [keyTracker, requestPath, queryClient]);
|
|
75
|
+
|
|
64
76
|
const nextPage = () => {
|
|
65
77
|
if (query.data?.data.pagination) {
|
|
66
78
|
const pagination: IPagination = query.data.data.pagination;
|