import type { NextPage } from "next"; import styles from "../styles/Home.module.css"; import { MediaRenderer, Web3Button, useActiveClaimConditionForWallet, useAddress, useClaimIneligibilityReasons, useContract, useContractMetadata, useTotalCirculatingSupply, useTotalCount } from "@thirdweb-dev/react"; import { CONTRACT_ADDRESS } from "../const/addresses"; import { ethers } from "ethers"; import { useRouter } from "next/router"; import { useState } from "react"; const Home: NextPage = () => { const address = useAddress(); const router = useRouter(); const maxClaimQuantity = 1; const claimQuantity = 1; const { contract } = useContract(CONTRACT_ADDRESS); const { data: contractMetadata, isLoading: isContractMetadataLoading, } = useContractMetadata(contract); const { data: activeClaimPhase, isLoading: isActiveClaimPhaseLoading, } = useActiveClaimConditionForWallet(contract, address); const { data: claimIneligibilityReasons, isLoading: isClaimIneligibilityReasonsLoading, } = useClaimIneligibilityReasons( contract, { walletAddress: address || "", quantity: 1, } ); const { data: totalSupply, isLoading: isTotalSupplyLoading, } = useTotalCount(contract); const { data: totalClaimSupply, isLoading: isTotalClaimSupplyLoading, } = useTotalCirculatingSupply(contract); return (
{!address && (

Connect wallet to mint NFT

)} {!isContractMetadataLoading && (

{contractMetadata?.name}

{contractMetadata?.description}

{!isActiveClaimPhaseLoading ? (

Claim Phase: {activeClaimPhase?.metadata?.name}

Price: {ethers.utils.formatUnits(activeClaimPhase?.price!)} RAX

) : (

Loading...

)} {!isTotalSupplyLoading && !isTotalClaimSupplyLoading ? (

Claimed: {totalClaimSupply?.toNumber()} / {totalSupply?.toNumber()}

) : (

Loading...

)} {address ? ( !isClaimIneligibilityReasonsLoading ? ( claimIneligibilityReasons?.length! > 0 ? ( claimIneligibilityReasons?.map((reason, index) => (

{reason}

)) ) : (

Eligible to claim

contract.erc721.claim(claimQuantity)} onSuccess={() => router.push(`/profile/${address}`)} >Claim NFT
) ) : (

Checking Eligibility...

) ) : (

Connect Wallet to claim

)}
)}
); }; export default Home;