useBuyDirectListing

Hook for buying a direct listing on a Marketplace V3 smart contract.

If the listing is in a currency that is not native to the chain (e.g. not Ether on Ethereum), the hook will prompt the user to approve the marketplace contract to spend the currency on their behalf before performing the buy.

import { useBuyDirectListing } from "@thirdweb-dev/react";
const { mutateAsync, isLoading, error } =
useBuyDirectListing(contract);

Example

import {
useBuyDirectListing,
useContract,
Web3Button,
} from "@thirdweb-dev/react";
import { ListingType } from "@thirdweb-dev/sdk";
function App() {
const { contract } = useContract(contractAddress, "marketplace-v3");
const {
mutateAsync: buyDirectListing,
isLoading,
error,
} = useBuyDirectListing(contract);
return (
<Web3Button
contractAddress={contractAddress}
action={() =>
buyDirectListing({
listingId: "{{listing_id}}", // ID of the listing to buy
quantity: "1",
buyer: "{{wallet_address}}", // Wallet to buy for
})
}
>
Buy Now
</Web3Button>
);
}
function useBuyDirectListing(
contract: RequiredParam<MarketplaceV3>,
): UseMutationResult<
Omit<{}, "data">,
unknown,
BuyFromListingParams,
unknown
>;

Parameters

Instance of a MarketplaceV3 contract

Type

let contract: RequiredParam<MarketplaceV3>;

Returns

let returnType: UseMutationResult<
Omit<{}, "data">,
unknown,
BuyFromListingParams,
unknown
>;

Mutation object to buy out a direct listing

const { mutateAsync, isLoading, error } =
useBuyDirectListing(contract);

Options

The mutation function accepts an object as argument with the following properties:

listingId

The ID of the direct listing you want to buy.

quantity

The amount of tokens you want to buy from the listing.

Applicable for ERC1155 listings only, should always be 1 for ERC721 listings.

buyer

Specify a different wallet address to buy the listing for.