import {useSWRConfig} from "swr";

interface UseDataMutation<T> {
  key: string,
  mutation: (data: T) => Promise<T>
}

export const useDataMutation = <T>({key, mutation}: UseDataMutation<T> ) => {
  const { mutate: swrMutate } = useSWRConfig()

  const mutate = async (data: T) => {
    await swrMutate(key, mutation(data))
  }

  return {mutate}
}