@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
JavaScript
;
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;