Skip to content
Snippets Groups Projects
useCustomPopup.tsx 1004 B
Newer Older
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { AxiosRequestConfig } from 'axios'
import { fetchCustomPopup, putCustomPopup } from '../API'
import { ICustomPopup } from '../models/customPopup.model'
import { queryKeys } from './query-keys'

export const useCustomPopup = () => {
  const queryClient = useQueryClient()

  const customPopup = useQuery({
    queryKey: [queryKeys.customPopup],
    queryFn: fetchCustomPopup,
  })

  const mutation = useMutation<
    void,
    unknown,
    { customPopup: ICustomPopup; axiosHeaders: AxiosRequestConfig }
  >({
    mutationFn: ({ customPopup, axiosHeaders }) =>
      putCustomPopup(customPopup, axiosHeaders),
    onSuccess: () =>
      queryClient.invalidateQueries({ queryKey: [queryKeys.customPopup] }),
  })

  const saveCustomPopup = (
    customPopup: ICustomPopup,
    axiosHeaders: AxiosRequestConfig
  ) => {
    mutation.mutate({ customPopup, axiosHeaders })
  }

  return { customPopup, saveCustomPopup }