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