diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/Mintable.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/Mintable.tsx index 32d3d3b7f40..7346485605b 100644 --- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/Mintable.tsx +++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/Mintable.tsx @@ -27,12 +27,9 @@ import { useTxNotifications } from "hooks/useTxNotifications"; import { CircleAlertIcon } from "lucide-react"; import { useCallback } from "react"; import { useForm } from "react-hook-form"; -import { - type PreparedTransaction, - prepareContractCall, - sendAndConfirmTransaction, -} from "thirdweb"; +import { type PreparedTransaction, sendAndConfirmTransaction } from "thirdweb"; import { MintableERC721, MintableERC1155 } from "thirdweb/modules"; +import { grantRoles, hasAllRoles } from "thirdweb/modules"; import { useReadContract } from "thirdweb/react"; import type { NFTMetadataInputLimited } from "types/modified-types"; import { parseAttributes } from "utils/parseAttributes"; @@ -79,10 +76,10 @@ function MintableModule(props: ModuleInstanceProps) { contract: contract, }, ); - const hasMinterRole = useReadContract({ + const hasMinterRole = useReadContract(hasAllRoles, { contract: contract, - method: "function hasAllRoles(address user, uint256 roles) returns (bool)", - params: [ownerAccount?.address || "", MINTER_ROLE], + user: ownerAccount?.address || "", + roles: MINTER_ROLE, }); const isBatchMetadataInstalled = !!props.allModuleContractInfo.find( @@ -97,10 +94,10 @@ function MintableModule(props: ModuleInstanceProps) { } if (!hasMinterRole.data) { - const grantRoleTx = prepareContractCall({ + const grantRoleTx = grantRoles({ contract, - method: "function grantRole(address user, uint256 role) public", - params: [ownerAccount.address || "", MINTER_ROLE], + user: ownerAccount.address, + roles: MINTER_ROLE, }); await sendAndConfirmTransaction({ diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/module-instance.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/module-instance.tsx index 678a7c43f18..5ac173b0891 100644 --- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/module-instance.tsx +++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/module-instance.tsx @@ -31,7 +31,7 @@ export function ModuleInstance(props: ModuleInstanceProps) { return ; } - if (props.contractInfo.name.includes("Mintable-ignore")) { + if (props.contractInfo.name.includes("Mintable")) { return ; } diff --git a/packages/thirdweb/src/extensions/modules/MintableERC1155/mintWithRole.ts b/packages/thirdweb/src/extensions/modules/MintableERC1155/mintWithRole.ts index e6b025a00ae..1362fc1dd6d 100644 --- a/packages/thirdweb/src/extensions/modules/MintableERC1155/mintWithRole.ts +++ b/packages/thirdweb/src/extensions/modules/MintableERC1155/mintWithRole.ts @@ -45,11 +45,14 @@ export function mintWithRole( return generatedMint({ contract: options.contract, asyncParams: async () => { - const batchOfUris = await uploadOrExtractURIs( - [options.nft], - options.contract.client, - ); - const baseURI = getBaseUriFromBatch(batchOfUris); + let baseURI = ""; + if (options.nft) { + const batchOfUris = await uploadOrExtractURIs( + [options.nft], + options.contract.client, + ); + baseURI = getBaseUriFromBatch(batchOfUris); + } const tokenId = options.tokenId ?? maxUint256; return { diff --git a/packages/thirdweb/src/extensions/modules/MintableERC721/mintWithRole.ts b/packages/thirdweb/src/extensions/modules/MintableERC721/mintWithRole.ts index a3b4ba70a48..d2ce45fb186 100644 --- a/packages/thirdweb/src/extensions/modules/MintableERC721/mintWithRole.ts +++ b/packages/thirdweb/src/extensions/modules/MintableERC721/mintWithRole.ts @@ -41,11 +41,14 @@ export function mintWithRole(options: BaseTransactionOptions) { return generatedMint({ contract: options.contract, asyncParams: async () => { - const batchOfUris = await uploadOrExtractURIs( - options.nfts, - options.contract.client, - ); - const baseURI = getBaseUriFromBatch(batchOfUris); + let baseURI = ""; + if (options.nfts?.[0] !== "") { + const batchOfUris = await uploadOrExtractURIs( + options.nfts, + options.contract.client, + ); + baseURI = getBaseUriFromBatch(batchOfUris); + } return { to: getAddress(options.to),