import { replaceEqualDeep } from '@tanstack/query-core' import { useQueryClient } from './useQueryClient.js' import type { MutationCache, MutationState, QueryClient, } from '@tanstack/query-core' import type { MutationStateOptions } from './types.js' function getResult( mutationCache: MutationCache, options: MutationStateOptions, ): Array { return mutationCache .findAll(options.filters) .map( (mutation): TResult => (options.select ? options.select(mutation) : mutation.state) as TResult, ) } export function useMutationState( options: MutationStateOptions = {}, queryClient?: QueryClient, ): Array { 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 }