Skip to content

Commit 9aa7601

Browse files
authored
Fix tokenURI in ERC721SignatureMint (#232)
* ERC721SignatureMint: fix tokenURI and quantity * check URI not set
1 parent ac0cd9d commit 9aa7601

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

contracts/base/ERC721Base.sol

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ contract ERC721Base is ERC721A, ContractMetadata, Multicall, Ownable, Royalty, B
9797
*/
9898
function mintTo(address _to, string memory _tokenURI) public virtual {
9999
require(_canMint(), "Not authorized to mint.");
100-
fullURI[nextTokenIdToMint()] = _tokenURI;
100+
_setTokenURI(nextTokenIdToMint(), _tokenURI);
101101
_safeMint(_to, 1, "");
102102
}
103103

@@ -157,6 +157,11 @@ contract ERC721Base is ERC721A, ContractMetadata, Multicall, Ownable, Royalty, B
157157
Internal (overrideable) functions
158158
//////////////////////////////////////////////////////////////*/
159159

160+
function _setTokenURI(uint256 _tokenId, string memory _tokenURI) internal virtual {
161+
require(bytes(fullURI[_tokenId]).length == 0, "URI already set");
162+
fullURI[_tokenId] = _tokenURI;
163+
}
164+
160165
/// @dev Returns whether contract metadata can be set in the given execution context.
161166
function _canSetContractURI() internal view virtual override returns (bool) {
162167
return msg.sender == owner();

contracts/base/ERC721SignatureMint.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ contract ERC721SignatureMint is ERC721Base, PrimarySale, SignatureMintERC721 {
5454
override
5555
returns (address signer)
5656
{
57-
require(_req.quantity > 0, "Minting zero tokens.");
57+
require(_req.quantity == 1, "quantiy must be 1");
5858

5959
uint256 tokenIdToMint = nextTokenIdToMint();
6060

@@ -79,7 +79,7 @@ contract ERC721SignatureMint is ERC721Base, PrimarySale, SignatureMintERC721 {
7979
}
8080

8181
// Mint tokens.
82-
_batchMintMetadata(nextTokenIdToMint(), _req.quantity, _req.uri);
82+
_setTokenURI(tokenIdToMint, _req.uri);
8383
_safeMint(receiver, _req.quantity);
8484

8585
emit TokensMintedWithSignature(signer, receiver, tokenIdToMint, _req);

src/test/sdk/base/ERC721Drop.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import "@ds-test/test.sol";
77
import "./BaseUtilTest.sol";
88
import { ERC721Drop } from "contracts/base/ERC721Drop.sol";
99

10-
contract BaseERC721ERC721DropTest is BaseUtilTest {
10+
contract BaseERC721DropTest is BaseUtilTest {
1111
ERC721Drop internal base;
1212
using TWStrings for uint256;
1313

src/test/sdk/base/ERC721SignatureMint.t.sol

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ contract BaseERC721SignatureMintTest is BaseUtilTest {
9797
base.mintWithSignature(_mintrequest, _signature);
9898

9999
assertEq(base.nextTokenIdToMint(), nextTokenId + _mintrequest.quantity);
100-
assertEq(base.tokenURI(nextTokenId), string(abi.encodePacked(_mintrequest.uri, nextTokenId.toString())));
100+
assertEq(base.tokenURI(nextTokenId), string(abi.encodePacked(_mintrequest.uri)));
101101
assertEq(base.totalSupply(), currentTotalSupply + _mintrequest.quantity);
102102
assertEq(base.balanceOf(recipient), currentBalanceOfRecipient + _mintrequest.quantity);
103103
assertEq(base.ownerOf(nextTokenId), recipient);
@@ -121,7 +121,7 @@ contract BaseERC721SignatureMintTest is BaseUtilTest {
121121
base.mintWithSignature(_mintrequest, _signature);
122122

123123
assertEq(base.nextTokenIdToMint(), nextTokenId + _mintrequest.quantity);
124-
assertEq(base.tokenURI(nextTokenId), string(abi.encodePacked(_mintrequest.uri, nextTokenId.toString())));
124+
assertEq(base.tokenURI(nextTokenId), string(abi.encodePacked(_mintrequest.uri)));
125125
assertEq(base.totalSupply(), currentTotalSupply + _mintrequest.quantity);
126126
assertEq(base.balanceOf(recipient), currentBalanceOfRecipient + _mintrequest.quantity);
127127
assertEq(base.ownerOf(nextTokenId), recipient);
@@ -144,7 +144,7 @@ contract BaseERC721SignatureMintTest is BaseUtilTest {
144144
base.mintWithSignature{ value: 1 }(_mintrequest, _signature);
145145

146146
assertEq(base.nextTokenIdToMint(), nextTokenId + _mintrequest.quantity);
147-
assertEq(base.tokenURI(nextTokenId), string(abi.encodePacked(_mintrequest.uri, nextTokenId.toString())));
147+
assertEq(base.tokenURI(nextTokenId), string(abi.encodePacked(_mintrequest.uri)));
148148
assertEq(base.totalSupply(), currentTotalSupply + _mintrequest.quantity);
149149
assertEq(base.balanceOf(recipient), currentBalanceOfRecipient + _mintrequest.quantity);
150150
assertEq(base.ownerOf(nextTokenId), recipient);
@@ -162,13 +162,13 @@ contract BaseERC721SignatureMintTest is BaseUtilTest {
162162
base.mintWithSignature{ value: 0 }(_mintrequest, _signature);
163163
}
164164

165-
function test_revert_mintWithSignature_MintingZeroTokens() public {
165+
function test_revert_mintWithSignature_QuantityNotOne() public {
166166
vm.warp(1000);
167167

168168
_mintrequest.quantity = 0;
169169
_signature = signMintRequest(_mintrequest, privateKey);
170170

171-
vm.expectRevert("Minting zero tokens.");
171+
vm.expectRevert("quantiy must be 1");
172172
base.mintWithSignature(_mintrequest, _signature);
173173
}
174174
}

0 commit comments

Comments
 (0)