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