useFetchRelayInfo.tsx raw

   1  import relayInfoService from '@/services/relay-info.service'
   2  import { TRelayInfo } from '@/types'
   3  import { useEffect, useState } from 'react'
   4  
   5  export function useFetchRelayInfo(url?: string) {
   6    const [isFetching, setIsFetching] = useState(true)
   7    const [relayInfo, setRelayInfo] = useState<TRelayInfo | undefined>(undefined)
   8  
   9    useEffect(() => {
  10      if (!url) return
  11      const fetchRelayInfos = async () => {
  12        setIsFetching(true)
  13        const timer = setTimeout(() => {
  14          setIsFetching(false)
  15        }, 5000)
  16        try {
  17          const relayInfo = await relayInfoService.getRelayInfo(url)
  18          setRelayInfo(relayInfo)
  19        } catch (err) {
  20          console.error(err)
  21        } finally {
  22          clearTimeout(timer)
  23          setIsFetching(false)
  24        }
  25      }
  26  
  27      fetchRelayInfos()
  28    }, [url])
  29  
  30    return { relayInfo, isFetching }
  31  }
  32