//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "hardhat/console.sol"; //learn more: https://docs.openzeppelin.com/contracts/3.x/erc721 // GET LISTED ON OPENSEA: https://testnets.opensea.io/get-listed/step-two contract NftContract is ERC721URIStorage, Ownable { using Counters for Counters.Counter; Counters.Counter public _tokenIds; constructor() ERC721("NG NFT Contract", "NGC") { // _setBaseURI("https://ipfs.io/ipfs/"); } function tokenURI(uint256 tokenId) public view override (ERC721URIStorage) returns (string memory) { require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token"); return super.tokenURI(tokenId); } function _burn(uint256 tokenId) internal virtual override(ERC721URIStorage) { super._burn(tokenId); // if (bytes(_tokenURIs[tokenId]).length != 0) { // delete _tokenURIs[tokenId]; // } } function mintItem(address to, string memory _tokenURI) public onlyOwner returns (uint256) { _tokenIds.increment(); uint256 id = _tokenIds.current(); _mint(to, id); _setTokenURI(id, _tokenURI); return id; } }