use-hide-logic.ts 976 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { useCallback, useState } from 'react'
  2. import useFoldAnimInto from './use-fold-anim-into'
  3. const useHideLogic = (onClose: () => void) => {
  4. const {
  5. modalClassName,
  6. foldIntoAnim: doFoldAnimInto,
  7. clearCountDown,
  8. countDownFoldIntoAnim,
  9. } = useFoldAnimInto(onClose)
  10. const [isInstalling, doSetIsInstalling] = useState(false)
  11. const setIsInstalling = useCallback((isInstalling: boolean) => {
  12. if (!isInstalling)
  13. clearCountDown()
  14. doSetIsInstalling(isInstalling)
  15. }, [clearCountDown])
  16. const foldAnimInto = useCallback(() => {
  17. if (isInstalling) {
  18. doFoldAnimInto()
  19. return
  20. }
  21. onClose()
  22. }, [doFoldAnimInto, isInstalling, onClose])
  23. const handleStartToInstall = useCallback(() => {
  24. setIsInstalling(true)
  25. countDownFoldIntoAnim()
  26. }, [countDownFoldIntoAnim, setIsInstalling])
  27. return {
  28. modalClassName,
  29. foldAnimInto,
  30. setIsInstalling,
  31. handleStartToInstall,
  32. }
  33. }
  34. export default useHideLogic