Skip to content
Snippets Groups Projects
download-file-mutation.ts 810 B
Newer Older
brunoravera's avatar
wip
brunoravera committed
import { AxiosError } from 'axios'
import { useMutation as useRQMutation, UseMutationOptions } from 'react-query'
import axiosService from 'src/services/axios-service'

export namespace DownloadFileMutation {
  export type Params = { filePath: string }

  export type Response = Blob

  export const key = ['downloadFile']

  export const getKey = (params: Params) => [...key, params]

  export const mutationFn = async (params: Params) => {
    const response = await axiosService.post(`/files/download`, params, {
brunoravera's avatar
brunoravera committed
      responseType: 'blob',
brunoravera's avatar
wip
brunoravera committed
    })
    return response.data
  }

  export const useMutation = (
    options: UseMutationOptions<
      Response,
      AxiosError,
      DownloadFileMutation.Params
    > = {}
  ) => {
    return useRQMutation(mutationFn, { ...options, mutationKey: key })
  }
}