Openzeppelin files are not supported

Hey guys
Has anyone seen this before? These are the exact lines of code from the repo so I’m not sure why they are not supported.

Hey @johnversus
I’m confused at why these are not supported, I got them from video and github repo. I thought they would work

If you are using hardhat to deploy the contract, then you need to install those contracts locally.

In the nft marketplace tutorial, this contract is deployed using remix. There won’t be any error if you are using remix to deploy the contract.

Hi John
I deployed the contract in remix.etheruem.org so I’m confused sorry

If you have already deployed successfully on remix, you can ignore the local contract file.

I can ignore the 3 errors in that case?

After closing this contract file you app will ignore the errors, unless you are importing this elsewhere.

1 Like

Do you mean closing it in remix or in vs code sorry? :slight_smile:

Only in vs code file.

1 Like

Hey @johnversus
I’ve just had this error and I have a unique key at line 204. I’m not sure what it means by render method ‘panel’.

NFTBalances

import React, { useState } from "react";

import { useMoralis } from "react-moralis";

import { Card, Image, Tooltip, Modal, Input, Alert, Spin, Button } from "antd";

import { useNFTBalance } from "hooks/useNFTBalance";

import { FileSearchOutlined, ShoppingCartOutlined } from "@ant-design/icons";

import { useMoralisDapp } from "providers/MoralisDappProvider/MoralisDappProvider";

import { getExplorer } from "helpers/networks";

import { useWeb3ExecuteFunction } from "react-moralis";

const { Meta } = Card;

const styles = {

  NFTs: {

    display: "flex",

    flexWrap: "wrap",

    WebkitBoxPack: "start",

    justifyContent: "flex-start",

    margin: "0 auto",

    maxWidth: "1000px",

    gap: "10px",

  },

};

function NFTBalance() {

  const { NFTBalance, fetchSuccess } = useNFTBalance();

  const { chainId, marketAddress, contractABI } = useMoralisDapp();

  const { Moralis } = useMoralis();

  const [visible, setVisibility] = useState(false);

  const [nftToSend, setNftToSend] = useState(null);

  const [price, setPrice] = useState(1);

  const [loading, setLoading] = useState(false);

  const contractProcessor = useWeb3ExecuteFunction();

  const contractABIJson = JSON.parse(contractABI);

  const listItemFunction = "createMarketItem";

  const ItemImage = Moralis.Object.extend("ItemImages");

  async function list(nft, listPrice) {

    setLoading(true);

    const p = listPrice * ("1e" + 18);

    const ops = {

      contractAddress: marketAddress,

      functionName: listItemFunction,

      abi: contractABIJson,

      params: {

        nftContract: nft.token_address,

        tokenId: nft.token_id,

        price: String(p),

      },

    };

    await contractProcessor.fetch({

      params: ops,

      onSuccess: () => {

        console.log("success");

        setLoading(false);

        setVisibility(false);

        addItemImage();

        succList();

      },

      onError: (error) => {

        setLoading(false);

        failList();

      },

    });

  }

  async function approveAll(nft) {

    setLoading(true);  

    const ops = {

      contractAddress: nft.token_address,

      functionName: "setApprovalForAll",

      abi: [{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],

      params: {

        operator: marketAddress,

        approved: true

      },

    };

    await contractProcessor.fetch({

      params: ops,

      onSuccess: () => {

        console.log("Approval Received");

        setLoading(false);

        setVisibility(false);

        succApprove();

      },

      onError: (error) => {

        setLoading(false);

        failApprove();

      },

    });

  }

  const handleSellClick = (nft) => {

    setNftToSend(nft);

    setVisibility(true);

  };

  function succList() {

    let secondsToGo = 5;

    const modal = Modal.success({

      title: "Success!",

      content: `Your NFT was listed on the marketplace`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function succApprove() {

    let secondsToGo = 5;

    const modal = Modal.success({

      title: "Success!",

      content: `Approval is now set, you may list your NFT`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function failList() {

    let secondsToGo = 5;

    const modal = Modal.error({

      title: "Error!",

      content: `There was a problem listing your NFT`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function failApprove() {

    let secondsToGo = 5;

    const modal = Modal.error({

      title: "Error!",

      content: `There was a problem with setting approval`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function addItemImage() {

    const itemImage = new ItemImage();

    itemImage.set("image", nftToSend.image);

    itemImage.set("nftContract", nftToSend.token_address);

    itemImage.set("tokenId", nftToSend.token_id);

    itemImage.set("name", nftToSend.name);

    itemImage.save();

  }

  return (

    <>

      <div style={styles.NFTs}>

        {contractABIJson.noContractDeployed && (

          <>

            <Alert

              message="No Smart Contract Details Provided. Please deploy smart contract and provide address + ABI in the MoralisDappProvider.js file"

              type="error"

            />

            <div style={{ marginBottom: "10px" }}></div>

          </>

        )}

        {!fetchSuccess && (

          <>

            <Alert

              message="Unable to fetch all NFT metadata... We are searching for a solution, please try again later!"

              type="warning"

            />

            <div style={{ marginBottom: "10px" }}></div>

          </>

        )}

        {NFTBalance &&

          NFTBalance.map((nft, index) => (

            <Card

              hoverable

              actions={[

                <Tooltip title="View On Blockexplorer">

                  <FileSearchOutlined

                    onClick={() =>

                      window.open(

                        `${getExplorer(chainId)}address/${nft.token_address}`,

                        "_blank"

                      )

                    }

                  />

                </Tooltip>,

                <Tooltip title="List NFT for sale">

                  <ShoppingCartOutlined onClick={() => handleSellClick(nft)} />

                </Tooltip>,

              ]}

              style={{ width: 240, border: "2px solid #e7eaf3" }}

              cover={

                <Image

                  preview={false}

                  src={nft?.image || "error"}

                  fallback="data:image/png;base64,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"

                  alt=""

                  style={{ height: "240px" }}

                />

              }

              key={index}

            >

              <Meta title={nft.name} description={nft.contract_type} />

            </Card>

          ))}

      </div>

      <Modal

        title={`List ${nftToSend?.name} #${nftToSend?.token_id} For Sale`}

        visible={visible}

        onCancel={() => setVisibility(false)}

        onOk={() => list(nftToSend, price)}

        okText="List"

        footer={[

          <Button onClick={() => setVisibility(false)}>

            Cancel

          </Button>,

          <Button onClick={() => approveAll(nftToSend)} type="primary">

            Approve

          </Button>,

          <Button onClick={() => list(nftToSend, price)} type="primary">

            List

          </Button>

        ]}

      >

        <Spin spinning={loading}>

          <img

            src={`${nftToSend?.image}`}

            style={{

              width: "250px",

              margin: "auto",

              borderRadius: "10px",

              marginBottom: "15px",

            }}

          />

          <Input

            autoFocus

            placeholder="Listing Price in MATIC"

            onChange={(e) => setPrice(e.target.value)}

          />

        </Spin>

      </Modal>

    </>

  );

}

export default NFTBalance;

This error can be fixed by adding a unique key property to the items rendered thru a loop. Read more here

1 Like

Hey John
I thought I had done the unique key correctly. Ill have a read through the document now. I’ve just had troubles understanding this part. thats all.
Cheers :slight_smile:

@johnversus I’m still abit unsure of what I need to do to fix this error in my code. Are you able to explain what I need to do in my code? I’ve cross checked with the repo from the video aswell now and i still can’t get it to work. Thank you for helping

import React, { useState } from "react";

import { useMoralis } from "react-moralis";

import { Card, Image, Tooltip, Modal, Input, Alert, Spin, Button } from "antd";

import { useNFTBalance } from "hooks/useNFTBalance";

import { FileSearchOutlined, ShoppingCartOutlined } from "@ant-design/icons";

import { useMoralisDapp } from "providers/MoralisDappProvider/MoralisDappProvider";

import { getExplorer } from "helpers/networks";

import { useWeb3ExecuteFunction } from "react-moralis";

const { Meta } = Card;

const styles = {

  NFTs: {

    display: "flex",

    flexWrap: "wrap",

    WebkitBoxPack: "start",

    justifyContent: "flex-start",

    margin: "0 auto",

    maxWidth: "1000px",

    gap: "10px",

  },

};

function NFTBalance() {

  const { NFTBalance, fetchSuccess } = useNFTBalance();

  const { chainId, marketAddress, contractABI } = useMoralisDapp();

  const { Moralis } = useMoralis();

  const [visible, setVisibility] = useState(false);

  const [nftToSend, setNftToSend] = useState(null);

  const [price, setPrice] = useState(1);

  const [loading, setLoading] = useState(false);

  const contractProcessor = useWeb3ExecuteFunction();

  const contractABIJson = JSON.parse(contractABI);

  const listItemFunction = "createMarketItem";

  const ItemImage = Moralis.Object.extend("ItemImages");

  async function list(nft, listPrice) {

    setLoading(true);

    const p = listPrice * ("1e" + 18);

    const ops = {

      contractAddress: marketAddress,

      functionName: listItemFunction,

      abi: contractABIJson,

      params: {

        nftContract: nft.token_address,

        tokenId: nft.token_id,

        price: String(p),

      },

    };

    await contractProcessor.fetch({

      params: ops,

      onSuccess: () => {

        console.log("success");

        setLoading(false);

        setVisibility(false);

        addItemImage();

        succList();

      },

      onError: (error) => {

        setLoading(false);

        failList();

      },

    });

  }

  async function approveAll(nft) {

    setLoading(true);  

    const ops = {

      contractAddress: nft.token_address,

      functionName: "setApprovalForAll",

      abi: [{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],

      params: {

        operator: marketAddress,

        approved: true

      },

    };

    await contractProcessor.fetch({

      params: ops,

      onSuccess: () => {

        console.log("Approval Received");

        setLoading(false);

        setVisibility(false);

        succApprove();

      },

      onError: (error) => {

        setLoading(false);

        failApprove();

      },

    });

  }

  const handleSellClick = (nft) => {

    setNftToSend(nft);

    setVisibility(true);

  };

  function succList() {

    let secondsToGo = 5;

    const modal = Modal.success({

      title: "Success!",

      content: `Your NFT was listed on the marketplace`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function succApprove() {

    let secondsToGo = 5;

    const modal = Modal.success({

      title: "Success!",

      content: `Approval is now set, you may list your NFT`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function failList() {

    let secondsToGo = 5;

    const modal = Modal.error({

      title: "Error!",

      content: `There was a problem listing your NFT`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function failApprove() {

    let secondsToGo = 5;

    const modal = Modal.error({

      title: "Error!",

      content: `There was a problem with setting approval`,

    });

    setTimeout(() => {

      modal.destroy();

    }, secondsToGo * 1000);

  }

  function addItemImage() {

    const itemImage = new ItemImage();

    itemImage.set("image", nftToSend.image);

    itemImage.set("nftContract", nftToSend.token_address);

    itemImage.set("tokenId", nftToSend.token_id);

    itemImage.set("name", nftToSend.name);

    itemImage.save();

  }

  return (

    <>

      <div style={styles.NFTs}>

        {contractABIJson.noContractDeployed && (

          <>

            <Alert

              message="No Smart Contract Details Provided. Please deploy smart contract and provide address + ABI in the MoralisDappProvider.js file"

              type="error"

            />

            <div style={{ marginBottom: "10px" }}></div>

          </>

        )}

        {!fetchSuccess && (

          <>

            <Alert

              message="Unable to fetch all NFT metadata... We are searching for a solution, please try again later!"

              type="warning"

            />

            <div style={{ marginBottom: "10px" }}></div>

          </>

        )}

        {NFTBalance &&

          NFTBalance.map((nft, index) => (

            <Card

              hoverable

              actions={[

                <Tooltip title="View On Blockexplorer">

                  <FileSearchOutlined

                    onClick={() =>

                      window.open(

                        `${getExplorer(chainId)}address/${nft.token_address}`,

                        "_blank"

                      )

                    }

                  />

                </Tooltip>,

                <Tooltip title="List NFT for sale">

                  <ShoppingCartOutlined onClick={() => handleSellClick(nft)} />

                </Tooltip>,

              ]}

              style={{ width: 240, border: "2px solid #e7eaf3" }}

              cover={

                <Image

                  preview={false}

                  src={nft?.image || "error"}

                  fallback="data:image/png;base64,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"

                  alt=""

                  style={{ height: "240px" }}

                />

              }

              key={index}

            >

              <Meta title={nft.name} description={nft.contract_type} />

            </Card>

          ))}

      </div>

      <Modal

        title={`List ${nftToSend?.name} #${nftToSend?.token_id} For Sale`}

        visible={visible}

        onCancel={() => setVisibility(false)}

        onOk={() => list(nftToSend, price)}

        okText="List"

        footer={[

          <Button onClick={() => setVisibility(false)}>

            Cancel

          </Button>,

          <Button onClick={() => approveAll(nftToSend)} type="primary">

            Approve

          </Button>,

          <Button onClick={() => list(nftToSend, price)} type="primary">

            List

          </Button>

        ]}

      >

        <Spin spinning={loading}>

          <img

            src={`${nftToSend?.image}`}

            style={{

              width: "250px",

              margin: "auto",

              borderRadius: "10px",

              marginBottom: "15px",

            }}

          />

          <Input

            autoFocus

            placeholder="Listing Price in MATIC"

            onChange={(e) => setPrice(e.target.value)}

          />

        </Spin>

      </Modal>

    </>

  );

}

export default NFTBalance;

Can you create a new post for this error. This is different from the title of this post.
Also check the error message for details on what is causing the error.

1 Like