Skip to content

Commit 4b69aae

Browse files
refactor: create generic createGetQueryData
1 parent 2038e57 commit 4b69aae

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { tokenKeys } from '../model'
2-
import { queryClient } from '@/shared/api/query-client'
3-
import { TokenKey } from '@/entities/token'
2+
import { createGetQueryData } from '@/shared/lib/queries'
43

5-
export const getTokenQueryData = <Result, Key extends TokenKey = TokenKey>(key: TokenKey, keyData: Parameters<typeof tokenKeys[Key]>[0]) =>
6-
queryClient.getQueryData<Result>(tokenKeys[key](keyData))
4+
5+
export const getTokenQueryData = createGetQueryData(tokenKeys)
Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
import { useQuery, QueryKey } from '@tanstack/react-query'
21
import type { UseQueryOptions } from '@tanstack/react-query'
2+
import { QueryKey, useQuery } from '@tanstack/react-query'
3+
import { queryClient } from '@/shared/api/query-client'
34

4-
export function createQueryHook<TParams, TData, TQueryKey extends QueryKey>(
5+
export const createQueryHook = <TParams, TData, TQueryKey extends QueryKey>(
56
getQueryOptions: (params: TParams, condition?: boolean) => UseQueryOptions<TData, Error, TData, TQueryKey>,
6-
) {
7-
return (params: TParams, condition?: boolean) => {
8-
const options = getQueryOptions(params, condition)
9-
return useQuery<TData, Error, TData, TQueryKey>(options)
10-
}
7+
) => (params: TParams, condition?: boolean) => {
8+
const options = getQueryOptions(params, condition)
9+
return useQuery<TData, Error, TData, TQueryKey>(options)
1110
}
11+
12+
export const createGetQueryData = <KeysObject extends Record<keyof KeysObject & string, (arg: any) => any>>(
13+
keys: KeysObject
14+
) =>
15+
<Result, Key extends keyof KeysObject = keyof KeysObject>(key: Key, keyData: Parameters<KeysObject[Key]>[0]) =>
16+
queryClient.getQueryData<Result>(keys[key](keyData))

0 commit comments

Comments
 (0)