@@ -580,11 +580,10 @@ contract GamePasses is
580580 }
581581
582582 _updateAndCheckTotalMinted (mintTokenId, mintAmount);
583- mintConfig.mintedPerWallet[ mintTo] += mintAmount;
583+ _updateAndCheckMaxPerWallet (mintTokenId, mintTo, mintAmount) ;
584584
585585 _burn (burnFrom, burnTokenId, burnAmount);
586586
587- _checkMaxPerWallet (mintTokenId, mintTo, mintAmount);
588587 _mint (mintTo, mintTokenId, mintAmount, "" );
589588 }
590589
@@ -638,8 +637,7 @@ contract GamePasses is
638637 }
639638
640639 _updateAndCheckTotalMinted (mintTokenIds[i], mintAmounts[i]);
641- _checkMaxPerWallet (mintTokenIds[i], mintTo, mintAmounts[i]);
642- mintConfig.mintedPerWallet[mintTo] += mintAmounts[i];
640+ _updateAndCheckMaxPerWallet (mintTokenIds[i], mintTo, mintAmounts[i]);
643641 }
644642
645643 _burnBatch (burnFrom, burnTokenIds, burnAmounts);
@@ -705,11 +703,9 @@ contract GamePasses is
705703 verifyBurnAndMintSignature (request, signature);
706704
707705 _updateAndCheckTotalMinted (mintId, mintAmount);
708- mintConfig.mintedPerWallet[ caller] += mintAmount;
706+ _updateAndCheckMaxPerWallet (mintId, caller, mintAmount) ;
709707
710708 _burn (caller, burnId, burnAmount);
711-
712- _checkMaxPerWallet (mintId, caller, mintAmount);
713709 _mint (caller, mintId, mintAmount, "" );
714710 }
715711
@@ -1269,11 +1265,9 @@ contract GamePasses is
12691265
12701266 verifySignature (request, signature);
12711267
1272- _checkMaxPerWallet (request.tokenId, request.caller, request.amount);
1268+ _updateAndCheckMaxPerWallet (request.tokenId, request.caller, request.amount);
12731269 _updateAndCheckTotalMinted (request.tokenId, request.amount);
12741270
1275- config.mintedPerWallet[request.caller] += request.amount;
1276-
12771271 address treasury = config.treasuryWallet;
12781272 if (treasury == address (0 )) {
12791273 treasury = _coreStorage ().defaultTreasuryWallet;
@@ -1305,11 +1299,9 @@ contract GamePasses is
13051299 revert TokenNotConfigured (request.tokenIds[i]);
13061300 }
13071301
1308- _checkMaxPerWallet (request.tokenIds[i], request.caller, request.amounts[i]);
1302+ _updateAndCheckMaxPerWallet (request.tokenIds[i], request.caller, request.amounts[i]);
13091303 _updateAndCheckTotalMinted (request.tokenIds[i], request.amounts[i]);
13101304
1311- config.mintedPerWallet[request.caller] += request.amounts[i];
1312-
13131305 address treasury = config.treasuryWallet;
13141306 if (treasury == address (0 )) {
13151307 treasury = _coreStorage ().defaultTreasuryWallet;
@@ -1388,14 +1380,16 @@ contract GamePasses is
13881380 * - Current wallet balance + amount would exceed max per wallet
13891381 * @dev Skips check if maxPerWallet is type(uint256).max (unlimited)
13901382 */
1391- function _checkMaxPerWallet (uint256 tokenId , address to , uint256 amount ) private view {
1383+ function _updateAndCheckMaxPerWallet (uint256 tokenId , address to , uint256 amount ) private {
13921384 TokenConfig storage config = _tokenStorage ().tokenConfigs[tokenId];
13931385
1386+ config.mintedPerWallet[to] += amount;
1387+
13941388 if (config.maxPerWallet == 0 ) {
13951389 revert ExceedsMaxPerWallet (tokenId, to, amount, 0 );
13961390 }
13971391
1398- if (config.maxPerWallet != type (uint256 ).max && config.mintedPerWallet[to] + amount > config.maxPerWallet) {
1392+ if (config.maxPerWallet != type (uint256 ).max && config.mintedPerWallet[to] > config.maxPerWallet) {
13991393 revert ExceedsMaxPerWallet (tokenId, to, amount, config.maxPerWallet);
14001394 }
14011395 }
0 commit comments