UNPKG

@lyncworld/fuel-marketplace

Version:

Marketplace NPM SDK on Fuel blockchain. Powered by LYNC, it allows anyone to create their own decentralized marketplace which includes listing and buying of Non-fungible tokens (NFTs) and Semi-fungible tokens (SFTs) in a few lines of code.

66 lines (58 loc) 1.6 kB
import { useCallback, useEffect, useState } from 'react'; import { HooksReturn, NftDetailsArgs, NftDetails, NftMetadata } from '@/interfaces'; import { getNftDetails } from '@/ssr'; const placeholderMetadata = { tokenName: '', tokenImage: '', tokenAssetMedia: '', description: '', } as const satisfies NftMetadata; export const useNft = ({ network, limit, contractAddress, nftStandard, tokenId, }: NftDetailsArgs): Readonly<HooksReturn<NftDetails>> => { const [fetching, setFetching] = useState<boolean>(true); const [data, setData] = useState<NftDetails>({ listingData: [], nftMetadata: placeholderMetadata, }); const [error, setError] = useState<unknown>(null); const fetchData = useCallback(async () => { setFetching(true); setError(null); try { const nftDetails = await getNftDetails({ network, limit, contractAddress, nftStandard, tokenId, }); if (nftDetails.success) { setError(null); setData(nftDetails.data); } else { setError(nftDetails.error); setData({ listingData: [], nftMetadata: placeholderMetadata, }); } } catch (error: unknown) { setError(error); setData({ listingData: [], nftMetadata: placeholderMetadata, }); } finally { setFetching(false); } }, [network, contractAddress, nftStandard, tokenId, limit]); useEffect(() => { fetchData(); }, [fetchData]); return { fetching, data, error } as const satisfies HooksReturn<NftDetails>; };