UNPKG

@yoroi/common

Version:

The Common package of Yoroi SDK

33 lines (30 loc) 844 B
import { QueryKey, useMutation, UseMutationOptions, useQueryClient, } from 'react-query' export const useMutationWithInvalidations = < TData = unknown, TError = unknown, TVariables = void, TContext = unknown, >({ invalidateQueries, ...options }: UseMutationOptions<TData, TError, TVariables, TContext> & { invalidateQueries?: Array<QueryKey> }) => { const queryClient = useQueryClient() return useMutation<TData, TError, TVariables, TContext>({ ...options, onMutate: (variables) => { invalidateQueries?.forEach((key) => queryClient.cancelQueries(key)) return options?.onMutate?.(variables) }, onSuccess: (data, variables, context) => { invalidateQueries?.forEach((key) => queryClient.invalidateQueries(key)) return options?.onSuccess?.(data, variables, context) }, }) }