useFetchRelayList.tsx raw

   1  import client from '@/services/client.service'
   2  import { TRelayList } from '@/types'
   3  import { useEffect, useState } from 'react'
   4  
   5  export function useFetchRelayList(pubkey?: string | null) {
   6    const [relayList, setRelayList] = useState<TRelayList>({
   7      write: [],
   8      read: [],
   9      originalRelays: []
  10    })
  11    const [isFetching, setIsFetching] = useState(true)
  12  
  13    useEffect(() => {
  14      const fetchRelayList = async () => {
  15        setIsFetching(true)
  16        if (!pubkey) {
  17          setIsFetching(false)
  18          return
  19        }
  20        try {
  21          const relayList = await client.fetchRelayList(pubkey)
  22          setRelayList(relayList)
  23        } catch (err) {
  24          console.error(err)
  25        } finally {
  26          setIsFetching(false)
  27        }
  28      }
  29  
  30      fetchRelayList()
  31    }, [pubkey])
  32  
  33    return { relayList, isFetching }
  34  }
  35