Skip to content

Commit c77a7c8

Browse files
Change updating and checking max per wallet limit
1 parent 59e8bb8 commit c77a7c8

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

packages/game-passes/contracts/GamePasses.sol

+9-15
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)