Hook for granting approval to NiftyApes to be able to access your NFT. This hook automatically checks if permission has been granted already.
import { Address, useERC721Approve } from '@niftyapes/sdk'
Usage
import React from "react";
import { useERC721Approve } from "@niftyapes/sdk";
import { useWaitForTransaction } from "wagmi";
const UseERC721Approve: React.FC = () => {
const nftId = "8";
const nftContractAddress = "0xa608475ec077e10d71db7476745d85f9e860e540";
const { hasCheckedApproval, hasApproval, write, data } = useERC721Approve({
nftId,
nftContractAddress,
});
const approvalRequired = hasCheckedApproval && !hasApproval;
const {
isLoading: isApproving,
isSuccess: isApproved,
isError,
} = useWaitForTransaction({ hash: data?.hash });
return (
<div>
<div>
{approvalRequired && (
<button onClick={() => write?.()}>Approve Transfer</button>
)}
</div>
<div>{isApproving && "Approving"}</div>
<div>{isApproved && "Transfer Approved"}</div>
<div>{isError && "Usable to approve transfer at this time"}</div>
</div>
);
};
export default UseERC721Approve;
Configuration
Requires a valid collection address and a token id
{
nftContractAddress: Address;
nftId: string;
}
Return Value
{
approvalCheckErr: boolean,
hasCheckedApproval: boolean,
hasApproval: boolean,
data?: TransactionResponse,
error?: Error,
isError: boolean,
isIdle: boolean,
isLoading: boolean,
isSuccess: boolean,
status: 'idle' | 'error' | 'loading' | 'success',
write?: () => void,
}