Skip to content

Commit

Permalink
dedupe useMutationState
Browse files Browse the repository at this point in the history
  • Loading branch information
lachlancollins committed Jul 16, 2024
1 parent 83eba3e commit 1274401
Showing 1 changed file with 2 additions and 60 deletions.
62 changes: 2 additions & 60 deletions packages/svelte-query/src/useIsMutating.svelte.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
import { notifyManager, replaceEqualDeep } from '@tanstack/query-core'
import { notifyManager } from '@tanstack/query-core'
import { useQueryClient } from './useQueryClient'
import type {
Mutation,
MutationCache,
MutationFilters,
MutationState,
QueryClient,
} from '@tanstack/query-core'
import type { MutationFilters, QueryClient } from '@tanstack/query-core'

export function useIsMutating(
filters?: MutationFilters,
Expand All @@ -33,55 +27,3 @@ export function useIsMutating(

return () => num.isMutating
}
type MutationStateOptions<TResult = MutationState> = {
filters?: MutationFilters
select?: (mutation: Mutation) => TResult
}

function getResult<TResult = MutationState>(
mutationCache: MutationCache,
options: MutationStateOptions<TResult>,
): Array<TResult> {
return mutationCache
.findAll(options.filters)
.map(
(mutation): TResult =>
(options.select ? options.select(mutation) : mutation.state) as TResult,
)
}

export function useMutationState<TResult = MutationState>(
options: MutationStateOptions<TResult> = {},
queryClient?: QueryClient,
): Array<TResult> {
const mutationCache = useQueryClient(queryClient).getMutationCache()
const result = $state(getResult(mutationCache, options))

$effect(() => {
const unsubscribe = mutationCache.subscribe(() => {
const nextResult = replaceEqualDeep(
result,
getResult(mutationCache, options),
)
if (result !== nextResult) {
Object.assign(result, nextResult)
}
})

return unsubscribe
})

/* $effect(() => {
mutationCache.subscribe(() => {
const nextResult = replaceEqualDeep(
result.current,
getResult(mutationCache, optionsRef),
)
if (result.current !== nextResult) {
result = nextResult
//notifyManager.schedule(onStoreChange)
}
})
}) */
return result
}

0 comments on commit 1274401

Please sign in to comment.