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