Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix(svelte-query): Fix createMutation for functions that take no argu…
…ments (#4847)

* Update createMutation test function name

* Default TVariables = void

* Fix createMutation test

* Fix prettier
  • Loading branch information
lachlancollins committed Jan 21, 2023
1 parent 61c3d94 commit 4f515de
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 19 deletions.
8 changes: 5 additions & 3 deletions packages/svelte-query/src/__tests__/CreateMutation.svelte
Expand Up @@ -2,12 +2,14 @@
import { createMutation, QueryClient } from '../index'
import { setQueryClientContext } from '../context'
export let queryFn: () => Promise<string>
export let mutationFn: () => Promise<string>
const queryClient = new QueryClient()
setQueryClientContext(queryClient)
const mutation = createMutation(queryFn)
const mutation = createMutation({
mutationFn,
})
</script>

<button on:click={$mutation.mutate}>Click</button>
<button on:click={() => $mutation.mutate()}>Click</button>
6 changes: 3 additions & 3 deletions packages/svelte-query/src/__tests__/createMutation.test.ts
Expand Up @@ -5,18 +5,18 @@ import { sleep } from './utils'

describe('createMutation', () => {
it('Call mutate and check function runs', async () => {
const queryFn = vi.fn()
const mutationFn = vi.fn()

render(CreateMutation, {
props: {
queryFn,
mutationFn,
},
})

fireEvent.click(screen.getByRole('button'))

await sleep(200)

expect(queryFn).toHaveBeenCalledTimes(1)
expect(mutationFn).toHaveBeenCalledTimes(1)
})
})
14 changes: 7 additions & 7 deletions packages/svelte-query/src/createMutation.ts
Expand Up @@ -7,7 +7,7 @@ import {
parseMutationArgs,
} from '@tanstack/query-core'
import type {
UseMutateFunction,
CreateMutateFunction,
CreateMutationOptions,
CreateMutationResult,
} from './types'
Expand All @@ -16,7 +16,7 @@ import { useQueryClient } from './useQueryClient'
export function createMutation<
TData = unknown,
TError = unknown,
TVariables = unknown,
TVariables = void,
TContext = unknown,
>(
options: CreateMutationOptions<TData, TError, TVariables, TContext>,
Expand All @@ -25,7 +25,7 @@ export function createMutation<
export function createMutation<
TData = unknown,
TError = unknown,
TVariables = unknown,
TVariables = void,
TContext = unknown,
>(
mutationFn: MutationFunction<TData, TVariables>,
Expand All @@ -38,7 +38,7 @@ export function createMutation<
export function createMutation<
TData = unknown,
TError = unknown,
TVariables = unknown,
TVariables = void,
TContext = unknown,
>(
mutationKey: MutationKey,
Expand All @@ -51,7 +51,7 @@ export function createMutation<
export function createMutation<
TData = unknown,
TError = unknown,
TVariables = unknown,
TVariables = void,
TContext = unknown,
>(
mutationKey: MutationKey,
Expand All @@ -65,7 +65,7 @@ export function createMutation<
export function createMutation<
TData = unknown,
TError = unknown,
TVariables = unknown,
TVariables = void,
TContext = unknown,
>(
arg1:
Expand All @@ -83,7 +83,7 @@ export function createMutation<
queryClient,
options,
)
let mutate: UseMutateFunction<TData, TError, TVariables, TContext>
let mutate: CreateMutateFunction<TData, TError, TVariables, TContext>

readable(observer).subscribe(($observer) => {
observer = $observer
Expand Down
14 changes: 8 additions & 6 deletions packages/svelte-query/src/types.ts
Expand Up @@ -87,7 +87,7 @@ export interface CreateMutationOptions<
'_defaulted' | 'variables'
> {}

export type UseMutateFunction<
export type CreateMutateFunction<
TData = unknown,
TError = unknown,
TVariables = void,
Expand All @@ -96,30 +96,32 @@ export type UseMutateFunction<
...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>
) => void

export type UseMutateAsyncFunction<
export type CreateMutateAsyncFunction<
TData = unknown,
TError = unknown,
TVariables = void,
TContext = unknown,
> = MutateFunction<TData, TError, TVariables, TContext>

export type UseBaseMutationResult<
export type CreateBaseMutationResult<
TData = unknown,
TError = unknown,
TVariables = unknown,
TContext = unknown,
> = Override<
MutationObserverResult<TData, TError, TVariables, TContext>,
{ mutate: UseMutateFunction<TData, TError, TVariables, TContext> }
> & { mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TContext> }
{ mutate: CreateMutateFunction<TData, TError, TVariables, TContext> }
> & {
mutateAsync: CreateMutateAsyncFunction<TData, TError, TVariables, TContext>
}

export interface CreateMutationResult<
TData = unknown,
TError = unknown,
TVariables = unknown,
TContext = unknown,
> extends Readable<
UseBaseMutationResult<TData, TError, TVariables, TContext>
CreateBaseMutationResult<TData, TError, TVariables, TContext>
> {}

type Override<A, B> = { [K in keyof A]: K extends keyof B ? B[K] : A[K] }

0 comments on commit 4f515de

Please sign in to comment.