UNPKG

@cross-nft-marketplace/auction-house-nft-hooks

Version:

Generic react hooks for fetching cross-nft-marketplace auctions, nfts, and data on arbitary 721s. Powers nft-components.

42 lines (41 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useZoraNFTIndexer = void 0; const tslib_1 = require("tslib"); const react_1 = require("react"); const NFTFetchContext_1 = require("../context/NFTFetchContext"); const swr_1 = tslib_1.__importDefault(require("swr")); const ZoraIndexerTransformers_1 = require("../fetcher/ZoraIndexerTransformers"); const data_1 = require("../utils/data"); /** * Fetches on-chain NFT data and pricing for the given NFT id and contract address * * @param contractAddress address of the contract, if null and tokenID is passed in, a ZNFT is assumed * @param tokenId id of NFT to fetch blockchain information for * @param swrConfiguration SWR flags configuration * @returns useNFTType hook results include loading, error, and chainNFT data. */ function useZoraNFTIndexer(contractAddress, tokenId, swrConfiguration = {}, requireData = false) { var _a; const fetcher = react_1.useContext(NFTFetchContext_1.NFTFetchContext); const actualSwrConfiguration = { ...swrConfiguration, initialData: undefined }; const nftData = swr_1.default(contractAddress && tokenId ? ['loadIndexerNFT', contractAddress, tokenId] : null, (_, contractAddress, tokenId) => fetcher.loadZoraNFTIndexerNFTUntransformed(contractAddress, tokenId), actualSwrConfiguration); if (nftData.data == null && swrConfiguration.initialData != null) { return { data: swrConfiguration.initialData }; } const data = nftData.data !== undefined ? ZoraIndexerTransformers_1.transformNFTIndexerResponse(nftData.data) : undefined; if (data != null && requireData && !data_1.hasZoraData(data)) { return { error: 'no data', }; } return { error: (_a = nftData.error) === null || _a === void 0 ? void 0 : _a.toString(), data, }; } exports.useZoraNFTIndexer = useZoraNFTIndexer;