diff --git a/packages/nextjs/contracts/deployedContracts.ts b/packages/nextjs/contracts/deployedContracts.ts
index 93b9e13..1e15179 100644
--- a/packages/nextjs/contracts/deployedContracts.ts
+++ b/packages/nextjs/contracts/deployedContracts.ts
@@ -2297,7 +2297,7 @@ const deployedContracts = {
},
421614: {
OnlyBuidlorsNft: {
- address: "0xf89Ab098Aaa1Aa62686BDa80A9cF2d681A39efB8",
+ address: "0xad3638B9b9901522AE985Acb4875FE4D708D66B9",
abi: [
{
type: "constructor",
diff --git a/packages/nextjs/pages/collection.tsx b/packages/nextjs/pages/collection.tsx
index 24e900d..9ceb752 100644
--- a/packages/nextjs/pages/collection.tsx
+++ b/packages/nextjs/pages/collection.tsx
@@ -53,6 +53,9 @@ const Collection: NextPage = () => {
+
+ ( Sometimes Vercel gets sleepy and takes up to ~30 seconds to respond )
+
{nfts.length > 0
? nfts.map((nft: any) => (
diff --git a/packages/nextjs/pages/index.tsx b/packages/nextjs/pages/index.tsx
index 8f5e595..1fb3359 100644
--- a/packages/nextjs/pages/index.tsx
+++ b/packages/nextjs/pages/index.tsx
@@ -56,6 +56,8 @@ const Home: NextPage = () => {
const { address } = useAccount();
/*** Read Contract ***/
+ const { data: onlyBuildorsNftContract } = useDeployedContractInfo("OnlyBuidlorsNft");
+
const { data: buidlCount } = useScaffoldContractRead({
contractName: "OnlyBuidlorsNft",
functionName: "getBuidlCount",
@@ -77,61 +79,48 @@ const Home: NextPage = () => {
},
});
- // useScaffoldEventSubscriber({
- // contractName: "OnlyBuidlorsNft",
- // eventName: "Minted",
- // listener: () => {
- // setStepsCompleted(3);
- // },
- // });
+ useScaffoldEventSubscriber({
+ contractName: "OnlyBuidlorsNft",
+ eventName: "Minted",
+ listener: () => {
+ setStepsCompleted(3);
+ },
+ });
/*** API requests ***/
- // BuidlGuidl API Request
- // only make the request if the eoa and contract address are defined AND the user has minted an NFT
+ // Only make BuidlGuidl API Request if the eoa and contract address are defined AND the user has minted an NFT
const bgBuildersUrl = address ? `https://buidlguidl-v3.appspot.com/builders/${address}` : null;
-
const { data: isBuilder, error: isBuilderError } = useSWR(bgBuildersUrl, fetcher, {
shouldRetryOnError: false, // Do not retry on error
onError: error => {
if (error.status === 404) {
- // Handle the 404 error specifically
console.error("Builder ddress not found in database:", error.info);
}
},
});
-
if (isBuilderError) {
console.log("isBuilderError", isBuilderError);
}
- // ENS NFT Request to Alchemy API
+ // Only make ENS NFT Request to Alchemy API if the BuidlGuidl API request was successful
const ensLookupUrl = address && isBuilder ? `/api/get-ens-name?eoaAddress=${address}` : null;
-
const { data: ensData, error: ensNameError } = useSWR(ensLookupUrl, fetcher);
-
if (ensNameError) {
console.log("ensNameError", ensNameError);
}
- console.log("ensName", ensData?.name);
-
- const { data: onlyBuildorsNftContract } = useDeployedContractInfo("OnlyBuidlorsNft");
- // Only Buider NFT Contract Request to Alchemy API
- // Only make the request if the eoa and contract address are defined AND the user has minted an NFT
+ // Only make OBDL collection request to Alchemy API eoa and contract address are defined AND the user has minted an NFT
const getNftForOwnerUrl =
- address && onlyBuildorsNftContract?.address && hasMinted
+ address && onlyBuildorsNftContract?.address && (hasMinted || stepsCompleted === 3)
? `/api/get-nft-for-owner?eoaAddress=${address}&nftContract=${onlyBuildorsNftContract?.address}`
: null;
-
const { data: nftData, error: nftError } = useSWR(getNftForOwnerUrl, fetcher);
-
if (nftError) {
console.log("nftError", nftError);
}
/*** Write Contract ***/
-
const {
writeAsync: sendRequest,
isLoading: requestTxIsLoading,
@@ -140,7 +129,6 @@ const Home: NextPage = () => {
contractName: "OnlyBuidlorsNft",
functionName: "sendRequest",
args: [SUBSCRIPTION_ID, [address || "0x000"], ensData?.name || ""],
- // blockConfirmations: 1,
onBlockConfirmation: () => {
setStepsCompleted(1);
},
@@ -158,21 +146,7 @@ const Home: NextPage = () => {
},
});
- // Handles showing user's minted NFT if the nftData has been successfully fetched
- // useEffect(() => {
- // if (nftData) {
- // try {
- // const decodedString = Buffer.from(nftData.raw.tokenUri, "base64").toString("utf-8");
- // const metadata = JSON.parse(decodedString);
- // setImgSrc(metadata.image);
- // } catch (e) {
- // console.log("error", e);
- // }
- // }
- // }, [nftData]);
-
- // Do I need a state variable in contract to track if member has completed SendRequest (step 1)?
- // How to track when chainlink node has responsed to the request?
+ // Controls the image/button displayed based on the state of the minting process
useEffect(() => {
if (hasMinted || stepsCompleted === 3) {
setStepsCompleted(3);