oceanprotocol/market

View on GitHub
src/@hooks/useCancelToken.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { useRef, useEffect, useCallback } from 'react'
import axios, { CancelToken } from 'axios'

export const useCancelToken = (): (() => CancelToken) => {
  const axiosSource = useRef(null)

  const newCancelToken = useCallback(() => {
    axiosSource.current = axios.CancelToken.source()
    return axiosSource?.current?.token
  }, [])

  useEffect(
    () => () => {
      if (axiosSource.current) axiosSource.current.cancel()
    },
    []
  )

  return newCancelToken
}