Skip to content

Commit 9ed08c6

Browse files
committed
fix(UseMutationResult): MutationState type should be more specific, to allow narrowing to match useQuery
1 parent 1427b1e commit 9ed08c6

File tree

1 file changed

+72
-1
lines changed

1 file changed

+72
-1
lines changed

src/react/types.ts

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export type UseMutateAsyncFunction<
119119
options?: MutateOptions<TData, TError, TVariables, TContext>
120120
) => Promise<TData>
121121

122-
export interface UseMutationResult<
122+
export interface UseMutationBaseResult<
123123
TData = unknown,
124124
TError = unknown,
125125
TVariables = unknown,
@@ -140,3 +140,74 @@ export interface UseMutationResult<
140140
status: MutationStatus
141141
variables: TVariables | undefined
142142
}
143+
144+
export interface UseMutationIdleResult<
145+
TData = unknown,
146+
TError = unknown,
147+
TVariables = unknown,
148+
TContext = unknown
149+
> extends UseMutationBaseResult<TData, TError, TVariables, TContext> {
150+
data: undefined
151+
error: null
152+
isError: false
153+
isIdle: true
154+
isLoading: false
155+
isSuccess: false
156+
status: 'idle'
157+
}
158+
159+
export interface UseMutationLoadingResult<
160+
TData = unknown,
161+
TError = unknown,
162+
TVariables = unknown,
163+
TContext = unknown
164+
> extends UseMutationBaseResult<TData, TError, TVariables, TContext> {
165+
data: undefined
166+
error: null
167+
isError: false
168+
isIdle: false
169+
isLoading: true
170+
isSuccess: false
171+
status: 'loading'
172+
}
173+
174+
export interface UseMutationErrorResult<
175+
TData = unknown,
176+
TError = unknown,
177+
TVariables = unknown,
178+
TContext = unknown
179+
> extends UseMutationBaseResult<TData, TError, TVariables, TContext> {
180+
data: undefined
181+
error: TError
182+
isError: true
183+
isIdle: false
184+
isLoading: false
185+
isSuccess: false
186+
status: 'error'
187+
}
188+
189+
export interface UseMutationSuccessResult<
190+
TData = unknown,
191+
TError = unknown,
192+
TVariables = unknown,
193+
TContext = unknown
194+
> extends UseMutationBaseResult<TData, TError, TVariables, TContext> {
195+
data: TData
196+
error: null
197+
isError: false
198+
isIdle: false
199+
isLoading: false
200+
isSuccess: true
201+
status: 'success'
202+
}
203+
204+
export type UseMutationResult<
205+
TData = unknown,
206+
TError = unknown,
207+
TVariables = unknown,
208+
TContext = unknown
209+
> =
210+
| UseMutationIdleResult<TData, TError, TVariables, TContext>
211+
| UseMutationLoadingResult<TData, TError, TVariables, TContext>
212+
| UseMutationErrorResult<TData, TError, TVariables, TContext>
213+
| UseMutationSuccessResult<TData, TError, TVariables, TContext>

0 commit comments

Comments
 (0)