useAcceptDirectListingOffer
Hook for accepting an offer from a direct listing on a Marketplace contract.
Allows the seller (the user who listed the NFT for sale) to accept an offer on their listing, triggering a sale event, meaning the:
- NFT(s) are transferred from the seller to the buyer.
- Funds from the offeror are sent to the seller.
import { useAcceptDirectListingOffer } from "@thirdweb-dev/react";
const { mutateAsync, isLoading, error } = useAcceptDirectListingOffer(contract);
Usage
Provide a Marketplace
contract instance from the
useContract
hook as the first argument.
import {
useAcceptDirectListingOffer,
useContract,
Web3Button,
} from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
function App() {
const { contract } = useContract(contractAddress, "marketplace");
const {
mutateAsync: acceptDirectOffer,
isLoading,
error,
} = useAcceptDirectListingOffer(contract);
return (
<Web3Button
contractAddress={contractAddress}
action={() =>
acceptDirectOffer({
listingId: "{{listing_id}}",
addressOfOfferor: "{{offeror_address}}",
})
}
>
Accept Offer
</Web3Button>
);
}
Configuration
listingId
listingId (required)
The listingId
of the listing you wish to accept.
Each listing has a unique listingId
on the marketplace contract.
import {
useAcceptDirectListingOffer,
useContract,
Web3Button,
} from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
function App() {
const { contract } = useContract(contractAddress, "marketplace");
const {
mutateAsync: acceptDirectOffer,
isLoading,
error,
} = useAcceptDirectListingOffer(contract);
return (
<Web3Button
contractAddress={contractAddress}
action={() =>
acceptDirectOffer({
listingId: "{{listing_id}}",
addressOfOfferor: "{{offeror_address}}",
})
}
>
Accept Offer
</Web3Button>
);
}
addressOfOfferor
addressOfOfferor (required)
The wallet address of the user who made the offer you wish to accept.
The useContractEvents
hook can be used to read all NewOffer
events on your marketplace contract.
import {
useAcceptDirectListingOffer,
useContract,
Web3Button,
} from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
function App() {
const { contract } = useContract(contractAddress, "marketplace");
const {
mutateAsync: acceptDirectOffer,
isLoading,
error,
} = useAcceptDirectListingOffer(contract);
return (
<Web3Button
contractAddress={contractAddress}
action={() =>
acceptDirectOffer({
listingId: "{{listing_id}}",
addressOfOfferor: "{{offeror_address}}",
})
}
>
Accept Offer
</Web3Button>
);
}