Skip to content

Commit 32ed545

Browse files
committed
update react-query and fix typings
1 parent 8d4c3fb commit 32ed545

File tree

9 files changed

+47
-29
lines changed

9 files changed

+47
-29
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"react-error-boundary": "^3.1.3",
3131
"react-helmet-async": "^1.1.2",
3232
"react-hook-form": "^7.7.1",
33-
"react-query": "^3.18.1",
33+
"react-query": "^3.34.15",
3434
"react-query-auth": "^1.0.0",
3535
"react-router-dom": "^6.0.0-beta.0",
3636
"react-scripts": "4.0.3",
+6-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useQuery } from 'react-query';
22

33
import { axios } from '@/lib/axios';
4-
import { QueryConfig } from '@/lib/react-query';
4+
import { ExtractFnReturnType, QueryConfig } from '@/lib/react-query';
55

66
import { Comment } from '../types';
77

@@ -13,15 +13,17 @@ export const getComments = ({ discussionId }: { discussionId: string }): Promise
1313
});
1414
};
1515

16+
type QueryFnType = typeof getComments;
17+
1618
type UseCommentsOptions = {
1719
discussionId: string;
18-
config?: QueryConfig<typeof getComments>;
20+
config?: QueryConfig<QueryFnType>;
1921
};
2022

2123
export const useComments = ({ discussionId, config }: UseCommentsOptions) => {
22-
return useQuery({
23-
...config,
24+
return useQuery<ExtractFnReturnType<QueryFnType>>({
2425
queryKey: ['comments', discussionId],
2526
queryFn: () => getComments({ discussionId }),
27+
...config,
2628
});
2729
};

src/features/discussions/api/getDiscussion.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
import { useQuery } from 'react-query';
22

33
import { axios } from '@/lib/axios';
4-
import { QueryConfig } from '@/lib/react-query';
4+
import { ExtractFnReturnType, QueryConfig } from '@/lib/react-query';
55

66
import { Discussion } from '../types';
77

88
export const getDiscussion = ({ discussionId }: { discussionId: string }): Promise<Discussion> => {
99
return axios.get(`/discussions/${discussionId}`);
1010
};
11+
12+
type QueryFnType = typeof getDiscussion;
13+
1114
type UseDiscussionOptions = {
1215
discussionId: string;
13-
config?: QueryConfig<typeof getDiscussion>;
16+
config?: QueryConfig<QueryFnType>;
1417
};
1518

1619
export const useDiscussion = ({ discussionId, config }: UseDiscussionOptions) => {
17-
return useQuery({
20+
return useQuery<ExtractFnReturnType<QueryFnType>>({
1821
...config,
1922
queryKey: ['discussion', discussionId],
2023
queryFn: () => getDiscussion({ discussionId }),

src/features/discussions/api/getDiscussions.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
import { useQuery } from 'react-query';
22

33
import { axios } from '@/lib/axios';
4-
import { QueryConfig } from '@/lib/react-query';
4+
import { ExtractFnReturnType, QueryConfig } from '@/lib/react-query';
55

66
import { Discussion } from '../types';
77

88
export const getDiscussions = (): Promise<Discussion[]> => {
99
return axios.get('/discussions');
1010
};
1111

12+
type QueryFnType = typeof getDiscussions;
13+
1214
type UseDiscussionsOptions = {
13-
config?: QueryConfig<typeof getDiscussions>;
15+
config?: QueryConfig<QueryFnType>;
1416
};
1517

1618
export const useDiscussions = ({ config }: UseDiscussionsOptions = {}) => {
17-
return useQuery({
19+
return useQuery<ExtractFnReturnType<QueryFnType>>({
1820
...config,
1921
queryKey: ['discussions'],
2022
queryFn: () => getDiscussions(),

src/features/teams/api/getMyTeam.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
import { useQuery } from 'react-query';
22

33
import { axios } from '@/lib/axios';
4-
import { QueryConfig } from '@/lib/react-query';
4+
import { ExtractFnReturnType, QueryConfig } from '@/lib/react-query';
55

66
import { Team } from '../types';
77

88
export const getMyTeam = (): Promise<Team> => {
99
return axios.get('/team');
1010
};
1111

12+
type QueryFnType = typeof getMyTeam;
13+
1214
type UseMyTeamOptions = {
13-
config?: QueryConfig<typeof getMyTeam>;
15+
config?: QueryConfig<QueryFnType>;
1416
};
1517

1618
export const useMyTeam = ({ config }: UseMyTeamOptions = {}) => {
17-
return useQuery({
19+
return useQuery<ExtractFnReturnType<QueryFnType>>({
1820
...config,
1921
queryKey: ['my-teams'],
2022
queryFn: () => getMyTeam(),

src/features/teams/api/getTeams.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
import { useQuery } from 'react-query';
22

33
import { axios } from '@/lib/axios';
4-
import { QueryConfig } from '@/lib/react-query';
4+
import { ExtractFnReturnType, QueryConfig } from '@/lib/react-query';
55

66
import { Team } from '../types';
77

88
export const getTeams = (): Promise<Team[]> => {
99
return axios.get('/teams');
1010
};
1111

12+
type QueryFnType = typeof getTeams;
13+
1214
type UseTeamsOptions = {
13-
config?: QueryConfig<typeof getTeams>;
15+
config?: QueryConfig<QueryFnType>;
1416
};
1517

1618
export const useTeams = ({ config = {} }: UseTeamsOptions = {}) => {
17-
return useQuery({
19+
return useQuery<ExtractFnReturnType<QueryFnType>>({
1820
...config,
1921
queryKey: ['teams'],
2022
queryFn: () => getTeams(),

src/features/users/api/getUsers.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
import { useQuery } from 'react-query';
22

33
import { axios } from '@/lib/axios';
4-
import { QueryConfig } from '@/lib/react-query';
4+
import { ExtractFnReturnType, QueryConfig } from '@/lib/react-query';
55

66
import { User } from '../types';
77

88
export const getUsers = (): Promise<User[]> => {
99
return axios.get(`/users`);
1010
};
1111

12+
type QueryFnType = typeof getUsers;
13+
1214
type UseUsersOptions = {
13-
config?: QueryConfig<typeof getUsers>;
15+
config?: QueryConfig<QueryFnType>;
1416
};
1517

1618
export const useUsers = ({ config }: UseUsersOptions = {}) => {
17-
return useQuery({
19+
return useQuery<ExtractFnReturnType<QueryFnType>>({
1820
...config,
1921
queryKey: ['users'],
2022
queryFn: () => getUsers(),

src/lib/react-query.ts

+10-5
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,17 @@ const queryConfig: DefaultOptions = {
1212

1313
export const queryClient = new QueryClient({ defaultOptions: queryConfig });
1414

15-
export type QueryConfig<FetcherFnType extends (...args: any) => any> = UseQueryOptions<
16-
PromiseValue<ReturnType<FetcherFnType>>
15+
export type ExtractFnReturnType<FnType extends (...args: any) => any> = PromiseValue<
16+
ReturnType<FnType>
1717
>;
1818

19-
export type MutationConfig<FetcherFnType extends (...args: any) => any> = UseMutationOptions<
20-
PromiseValue<ReturnType<FetcherFnType>>,
19+
export type QueryConfig<QueryFnType extends (...args: any) => any> = Omit<
20+
UseQueryOptions<ExtractFnReturnType<QueryFnType>>,
21+
'queryKey' | 'queryFn'
22+
>;
23+
24+
export type MutationConfig<MutationFnType extends (...args: any) => any> = UseMutationOptions<
25+
ExtractFnReturnType<MutationFnType>,
2126
AxiosError,
22-
Parameters<FetcherFnType>[0]
27+
Parameters<MutationFnType>[0]
2328
>;

yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -13760,10 +13760,10 @@ react-query-auth@^1.0.0:
1376013760
resolved "https://registry.yarnpkg.com/react-query-auth/-/react-query-auth-1.0.0.tgz#d8bd5fbf88d24c2c86cc406c1ddb6c854372ce8c"
1376113761
integrity sha512-SnxqQzCg0C4CUAWGddqaSTvi2PPbYH1yAT8kC8+b6vYY58lKmsTcVxvcpDIW91BSOgzP6aILUJlvORGRdgsEbg==
1376213762

13763-
react-query@^3.18.1:
13764-
version "3.18.1"
13765-
resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.18.1.tgz#893b5475a7b4add099e007105317446f7a2cd310"
13766-
integrity sha512-17lv3pQxU9n+cB5acUv0/cxNTjo9q8G+RsedC6Ax4V9D8xEM7Q5xf9xAbCPdEhDrrnzPjTls9fQEABKRSi7OJA==
13763+
react-query@^3.34.15:
13764+
version "3.34.15"
13765+
resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.34.15.tgz#9e143b7d0aa39c515102a35120d5518ad91b10f6"
13766+
integrity sha512-dOhGLB5RT3p+wWj0rVdAompSg+R9t6oMRk+JhU8DP0tpJM2UyIv3r4Kk0zUkHSxT+QG34hFdrgdqxVWxgeNq4g==
1376713767
dependencies:
1376813768
"@babel/runtime" "^7.5.5"
1376913769
broadcast-channel "^3.4.1"

0 commit comments

Comments
 (0)