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;