useFetchFollowings.tsx raw
1 import { getPubkeysFromPTags } from '@/lib/tag'
2 import client from '@/services/client.service'
3 import { Event } from 'nostr-tools'
4 import { useEffect, useState } from 'react'
5
6 export function useFetchFollowings(pubkey?: string | null) {
7 const [followListEvent, setFollowListEvent] = useState<Event | null>(null)
8 const [followings, setFollowings] = useState<string[]>([])
9 const [isFetching, setIsFetching] = useState(true)
10
11 useEffect(() => {
12 const init = async () => {
13 try {
14 setIsFetching(true)
15 if (!pubkey) return
16
17 const event = await client.fetchFollowListEvent(pubkey)
18 if (!event) return
19
20 setFollowListEvent(event)
21 setFollowings(getPubkeysFromPTags(event.tags))
22 } finally {
23 setIsFetching(false)
24 }
25 }
26
27 init()
28 }, [pubkey])
29
30 return { followings, followListEvent, isFetching }
31 }
32