空投合约增加一个可供外部调用的查询可mint列表的方法

This commit is contained in:
zhl 2023-04-19 09:53:04 +08:00
parent 36e89a35b2
commit 06f177fcc1
2 changed files with 3631 additions and 2647 deletions

File diff suppressed because one or more lines are too long

View File

@ -161,4 +161,39 @@ contract NftDistributor is AccessControlEnumerable {
// Return the final mintable count
return count;
}
/**
* @dev The getMintableNftIds function gets an array of NFT IDs owned by a user that have not yet been minted.
*
* This is a read-only function, meaning it doesn't modify the state of the blockchain.
* It takes in the address of the user whose mintable NFT IDs are being determined,
* and returns an array of the NFT IDs owned by the user that have not yet been minted.
*
* @param _user - The address of the user whose mintable NFT IDs are being determined
* @return mintableNftIds - An array of the NFT IDs owned by the user that have not yet been minted
*/
function getMintableNftIds(
address _user
) external view returns (uint256[] memory) {
// Get an array of all NFT IDs owned by the user
uint256[] memory nfts = ownerToNFTs[_user];
// Initialize an array for mintable NFT IDs with the same length as the array of all NFT IDs
uint256[] memory mintableNftIds = new uint256[](nfts.length);
// Initialize an index counter to zero
uint256 index = 0;
// Loop through the array of NFT IDs
for (uint256 i = 0; i < nfts.length; i++) {
// Get the NFT ID at this index of the loop
uint256 nftId = nfts[i];
// Check if the NFT has not yet been minted
if (!nftMinted[nftId]) {
// If the NFT has not yet been minted, add it to the mintable NFT IDs array
mintableNftIds[index] = nftId;
// Increment the index counter
index++;
}
}
// Return the array of mintable NFT IDs
return mintableNftIds;
}
}