1. Modify / Edit mint windows
function editMintWindows(
bool _publicMintOpen,
bool _allowListMintOpen
) external onlyOwner {
publicMintOpen = _publicMintOpen;
allowListMintOpen = _allowListMintOpen;
}
2. Set allowlist mapping to save allowlist addresses
- only hardcore people, certain people can mint this NFT
- set the allowlist, remember to add [""]
- create array for mapping
- create a for loop
3. Clean up code
pragma solidity ^0.8.24;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract EmilPD is ERC721, ERC721Enumerable, ERC721Pausable, Ownable {
uint256 private _nextTokenId;
uint256 maxSupply = 2000;
bool public publicMintOpen = false;
bool public allowListMintOpen = false;
mapping(address => bool) public allowList;
constructor(address initialOwner)
ERC721("EmilPD", "ED")
Ownable(initialOwner)
{}
function _baseURI() internal pure override returns (string memory) {
return "ipfs://QmZc8roJUDqCGipgGbZ9gz9dzpKAW17NkdfjQx2qnUk2JY/";
}
function pause() public onlyOwner {
_pause();
}
function unpause() public onlyOwner {
_unpause();
}
function editMintWindows(
bool _publicMintOpen,
bool _allowListMintOpen
) external onlyOwner {
publicMintOpen = _publicMintOpen;
allowListMintOpen = _allowListMintOpen;
}
function allowListMint() public payable {
require(allowListMintOpen, "AllowList Mint Closed");
require(allowList[msg.sender], "You are not on the allow list");
require(msg.value == 0.001 ether, "Not Enough Funds");
internalMint();
}
function publicMint() public payable {
require(publicMintOpen, "Public Mint Closed");
require(msg.value == 0.01 ether, "Not Enough Funds");
internalMint();
}
function internalMint() internal {
require(totalSupply() < maxSupply, "We Sold Out!");
uint256 tokenId = _nextTokenId++;
_safeMint(msg.sender, tokenId);
}
function setAllowList(address[] calldata addresses) external onlyOwner {
for(uint256 i = 0; i < addresses.length; i++){
allowList[addresses[i]] = true;
}
}
function _update(address to, uint256 tokenId, address auth)
internal
override(ERC721, ERC721Enumerable, ERC721Pausable)
returns (address)
{
return super._update(to, tokenId, auth);
}
function _increaseBalance(address account, uint128 value)
internal
override(ERC721, ERC721Enumerable)
{
super._increaseBalance(account, value);
}
function supportsInterface(bytes4 interfaceId)
public
view
override(ERC721, ERC721Enumerable)
returns (bool)
{
return super.supportsInterface(interfaceId);
}
}