useGrantRole
Hook for granting a role on a smart contract.
Available to use on smart contracts that implement the Permissions interface.
import { useGrantRole, useContract, Web3Button } from "@thirdweb-dev/react";
const { mutateAsync, isLoading, error } = useGrantRole(contract);
Usage
Provide your contract from the useContract as the argument.
import { useGrantRole, useContract, Web3Button } from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
const roleToGrant = "{{role}}";
const walletAddressToGrant = "{{wallet_address}}";
function App() {
  const { contract } = useContract(contractAddress);
  const { mutateAsync: grantRole, isLoading, error } = useGrantRole(contract);
  return (
    <Web3Button
      contractAddress={contractAddress}
      action={() =>
        grantRole({
          role: roleToGrant, // name of your role.
          address: walletAddressToGrant, // address to grant the role to.
        })
      }
    >
      Grant Role
    </Web3Button>
  );
}
Configuration
role (required)
role (required)
The name of the role to grant the address.
Accepts any string value to include custom-defined roles.
Also accepts the default roles available on the prebuilt contracts:
string |
  "admin" |
  "minter" |
  "transfer" |
  "lister" |
  "asset" |
  "unwrap" |
  "pauser" |
  "factory";
address (required)
address (required)
The address to grant the role to.
To use the address of the connected wallet, use the useAddress hook.
import {
  useGrantRole,
  useContract,
  Web3Button,
  useAddress,
} from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
// name of your role.
const roleToGrant = "{{role}}";
function App() {
  const address = useAddress();
  const { contract } = useContract(contractAddress);
  const { mutateAsync: grantRole, isLoading, error } = useGrantRole(contract);
  return (
    <Web3Button
      contractAddress={contractAddress}
      action={() =>
        grantRole({
          role: roleToGrant,
          address: address,
        })
      }
    >
      Grant Role
    </Web3Button>
  );
}