Skip to content

Commit aaf615a

Browse files
authored
Merge pull request #3769 from reduxjs/v1.9-rework-named-hooks
2 parents 49e00b4 + 928279b commit aaf615a

File tree

1 file changed

+33
-22
lines changed

1 file changed

+33
-22
lines changed

packages/toolkit/src/query/react/namedHooks.ts

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,37 @@ import type {
66
QueryDefinition,
77
} from '@reduxjs/toolkit/query'
88

9+
type QueryHookNames<Definitions extends EndpointDefinitions> = {
10+
[K in keyof Definitions as Definitions[K] extends {
11+
type: DefinitionType.query
12+
}
13+
? `use${Capitalize<K & string>}Query`
14+
: never]: UseQuery<
15+
Extract<Definitions[K], QueryDefinition<any, any, any, any>>
16+
>
17+
}
18+
19+
type LazyQueryHookNames<Definitions extends EndpointDefinitions> = {
20+
[K in keyof Definitions as Definitions[K] extends {
21+
type: DefinitionType.query
22+
}
23+
? `useLazy${Capitalize<K & string>}Query`
24+
: never]: UseLazyQuery<
25+
Extract<Definitions[K], QueryDefinition<any, any, any, any>>
26+
>
27+
}
28+
29+
type MutationHookNames<Definitions extends EndpointDefinitions> = {
30+
[K in keyof Definitions as Definitions[K] extends {
31+
type: DefinitionType.mutation
32+
}
33+
? `use${Capitalize<K & string>}Mutation`
34+
: never]: UseMutation<
35+
Extract<Definitions[K], MutationDefinition<any, any, any, any>>
36+
>
37+
}
38+
939
export type HooksWithUniqueNames<Definitions extends EndpointDefinitions> =
10-
keyof Definitions extends infer Keys
11-
? Keys extends string
12-
? Definitions[Keys] extends { type: DefinitionType.query }
13-
? {
14-
[K in Keys as `use${Capitalize<K>}Query`]: UseQuery<
15-
Extract<Definitions[K], QueryDefinition<any, any, any, any>>
16-
>
17-
} &
18-
{
19-
[K in Keys as `useLazy${Capitalize<K>}Query`]: UseLazyQuery<
20-
Extract<Definitions[K], QueryDefinition<any, any, any, any>>
21-
>
22-
}
23-
: Definitions[Keys] extends { type: DefinitionType.mutation }
24-
? {
25-
[K in Keys as `use${Capitalize<K>}Mutation`]: UseMutation<
26-
Extract<Definitions[K], MutationDefinition<any, any, any, any>>
27-
>
28-
}
29-
: never
30-
: never
31-
: never
40+
QueryHookNames<Definitions> &
41+
LazyQueryHookNames<Definitions> &
42+
MutationHookNames<Definitions>

0 commit comments

Comments
 (0)