ElectronicBabylonianLiterature/ebl-frontend

View on GitHub
src/common/usePromiseEffect.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { useRef, useEffect } from 'react'
import Promise from 'bluebird'

export default function usePromiseEffect<T = unknown>(): [
  (promise: Promise<T>) => void,
  () => void
] {
  const promiseRef = useRef<Promise<T>>()
  useEffect(() => (): void => promiseRef.current?.cancel(), [])
  return [
    (promise: Promise<T>): void => {
      promiseRef.current = promise
    },
    (): void => promiseRef.current?.cancel(),
  ]
}