From 8b2c8be19489a6e60470c94133a0d50222c204e6 Mon Sep 17 00:00:00 2001 From: Rohan Kulkarni Date: Thu, 17 Aug 2023 11:30:10 -0400 Subject: [PATCH] refactor: add first minter address param to reward handlers --- src/abstract/ERC1155/ERC1155Rewards.sol | 7 ++++--- src/abstract/ERC721/ERC721Rewards.sol | 14 +++++++++++--- src/abstract/RewardSplits.sol | 15 +++++++++++---- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/abstract/ERC1155/ERC1155Rewards.sol b/src/abstract/ERC1155/ERC1155Rewards.sol index c2cf40a..c4c5cb6 100644 --- a/src/abstract/ERC1155/ERC1155Rewards.sol +++ b/src/abstract/ERC1155/ERC1155Rewards.sol @@ -13,18 +13,19 @@ abstract contract ERC1155Rewards is RewardSplits { uint256 numTokens, address creator, address createReferral, - address mintReferral + address mintReferral, + address firstMinter ) internal returns (uint256) { uint256 totalReward = computeTotalReward(numTokens); if (msgValue < totalReward) { revert INVALID_ETH_AMOUNT(); } else if (msgValue == totalReward) { - _depositFreeMintRewards(totalReward, numTokens, creator, createReferral, mintReferral); + _depositFreeMintRewards(totalReward, numTokens, creator, createReferral, mintReferral, firstMinter); return 0; } else { - _depositPaidMintRewards(totalReward, numTokens, creator, createReferral, mintReferral); + _depositPaidMintRewards(totalReward, numTokens, createReferral, mintReferral, firstMinter); unchecked { return msgValue - totalReward; diff --git a/src/abstract/ERC721/ERC721Rewards.sol b/src/abstract/ERC721/ERC721Rewards.sol index 5bed832..f355912 100644 --- a/src/abstract/ERC721/ERC721Rewards.sol +++ b/src/abstract/ERC721/ERC721Rewards.sol @@ -8,7 +8,15 @@ import {RewardSplits} from "../RewardSplits.sol"; abstract contract ERC721Rewards is RewardSplits { constructor(address _protocolRewards, address _zoraRewardRecipient) payable RewardSplits(_protocolRewards, _zoraRewardRecipient) {} - function _handleRewards(uint256 msgValue, uint256 numTokens, uint256 salePrice, address creator, address createReferral, address mintReferral) internal { + function _handleRewards( + uint256 msgValue, + uint256 numTokens, + uint256 salePrice, + address creator, + address createReferral, + address mintReferral, + address firstMinter + ) internal { uint256 totalReward = computeTotalReward(numTokens); if (salePrice == 0) { @@ -16,7 +24,7 @@ abstract contract ERC721Rewards is RewardSplits { revert INVALID_ETH_AMOUNT(); } - _depositFreeMintRewards(totalReward, numTokens, creator, createReferral, mintReferral); + _depositFreeMintRewards(totalReward, numTokens, creator, createReferral, mintReferral, firstMinter); } else { uint256 totalSale = numTokens * salePrice; @@ -24,7 +32,7 @@ abstract contract ERC721Rewards is RewardSplits { revert INVALID_ETH_AMOUNT(); } - _depositPaidMintRewards(totalReward, numTokens, creator, createReferral, mintReferral); + _depositPaidMintRewards(totalReward, numTokens, createReferral, mintReferral, firstMinter); } } } diff --git a/src/abstract/RewardSplits.sol b/src/abstract/RewardSplits.sol index 9a4196e..514f7ee 100644 --- a/src/abstract/RewardSplits.sol +++ b/src/abstract/RewardSplits.sol @@ -69,7 +69,14 @@ abstract contract RewardSplits { }); } - function _depositFreeMintRewards(uint256 totalReward, uint256 numTokens, address creator, address createReferral, address mintReferral) internal { + function _depositFreeMintRewards( + uint256 totalReward, + uint256 numTokens, + address creator, + address createReferral, + address mintReferral, + address firstMinter + ) internal { RewardsSettings memory settings = computeFreeMintRewards(numTokens); if (createReferral == address(0)) { @@ -87,14 +94,14 @@ abstract contract RewardSplits { settings.createReferralReward, mintReferral, settings.mintReferralReward, - creator, + firstMinter, settings.firstMinterReward, zoraRewardRecipient, settings.zoraReward ); } - function _depositPaidMintRewards(uint256 totalReward, uint256 numTokens, address creator, address createReferral, address mintReferral) internal { + function _depositPaidMintRewards(uint256 totalReward, uint256 numTokens, address createReferral, address mintReferral, address firstMinter) internal { RewardsSettings memory settings = computePaidMintRewards(numTokens); if (createReferral == address(0)) { @@ -112,7 +119,7 @@ abstract contract RewardSplits { settings.createReferralReward, mintReferral, settings.mintReferralReward, - creator, + firstMinter, settings.firstMinterReward, zoraRewardRecipient, settings.zoraReward