Skip to content
Snippets Groups Projects
useCustomPopup.tsx 1004 B
Newer Older
  • Learn to ignore specific revisions
  • 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 }