Skip to content

Commit

Permalink
Merge branch 'main' into nkrishang/evolving-nfts
Browse files Browse the repository at this point in the history
  • Loading branch information
nkrishang committed Aug 4, 2023
2 parents d0857bd + e1d4c3d commit baad67a
Show file tree
Hide file tree
Showing 79 changed files with 4,677 additions and 804 deletions.
92 changes: 37 additions & 55 deletions contracts/OpenEditionERC721.sol
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ pragma solidity ^0.8.11;
import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol";

import "./eip/ERC721AVirtualApproveUpgradeable.sol";
import "./eip/queryable/ERC721AQueryableUpgradeable.sol";

// ========== Internal imports ==========

Expand All @@ -28,7 +28,6 @@ import "./lib/CurrencyTransferLib.sol";

import "./extension/Multicall.sol";
import "./extension/ContractMetadata.sol";
import "./extension/PlatformFee.sol";
import "./extension/Royalty.sol";
import "./extension/PrimarySale.sol";
import "./extension/Ownable.sol";
Expand All @@ -42,7 +41,6 @@ import "./extension/DefaultOperatorFiltererUpgradeable.sol";
contract OpenEditionERC721 is
Initializable,
ContractMetadata,
PlatformFee,
Royalty,
PrimarySale,
Ownable,
Expand All @@ -52,7 +50,7 @@ contract OpenEditionERC721 is
ERC2771ContextUpgradeable,
Multicall,
DefaultOperatorFiltererUpgradeable,
ERC721AUpgradeable
ERC721AQueryableUpgradeable
{
using StringsUpgradeable for uint256;

Expand Down Expand Up @@ -83,10 +81,8 @@ contract OpenEditionERC721 is
address[] memory _trustedForwarders,
address _saleRecipient,
address _royaltyRecipient,
uint128 _royaltyBps,
uint128 _platformFeeBps,
address _platformFeeRecipient
) external initializer {
uint128 _royaltyBps
) external initializerERC721A initializer {
bytes32 _transferRole = keccak256("TRANSFER_ROLE");
bytes32 _minterRole = keccak256("MINTER_ROLE");

Expand All @@ -104,7 +100,6 @@ contract OpenEditionERC721 is
_setupRole(_transferRole, _defaultAdmin);
_setupRole(_transferRole, address(0));

_setupPlatformFeeInfo(_platformFeeRecipient, _platformFeeBps);
_setupDefaultRoyaltyInfo(_royaltyRecipient, _royaltyBps);
_setupPrimarySaleRecipient(_saleRecipient);

Expand All @@ -117,7 +112,13 @@ contract OpenEditionERC721 is
//////////////////////////////////////////////////////////////*/

/// @dev Returns the URI for a given tokenId.
function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
function tokenURI(uint256 _tokenId)
public
view
virtual
override(ERC721AUpgradeable, IERC721AUpgradeable)
returns (string memory)
{
if (!_exists(_tokenId)) {
revert("!ID");
}
Expand All @@ -130,7 +131,7 @@ contract OpenEditionERC721 is
public
view
virtual
override(ERC721AUpgradeable, IERC165)
override(ERC721AUpgradeable, IERC165, IERC721AUpgradeable)
returns (bool)
{
return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId;
Expand Down Expand Up @@ -172,22 +173,7 @@ contract OpenEditionERC721 is

address saleRecipient = _primarySaleRecipient == address(0) ? primarySaleRecipient() : _primarySaleRecipient;

uint256 fees;
address feeRecipient;

PlatformFeeType feeType = getPlatformFeeType();
if (feeType == PlatformFeeType.Flat) {
(feeRecipient, fees) = getFlatPlatformFeeInfo();
} else {
uint16 platformFeeBps;
(feeRecipient, platformFeeBps) = getPlatformFeeInfo();
fees = (totalPrice * platformFeeBps) / MAX_BPS;
}

require(totalPrice >= fees, "!F");

CurrencyTransferLib.transferCurrency(_currency, _msgSender(), feeRecipient, fees);
CurrencyTransferLib.transferCurrency(_currency, _msgSender(), saleRecipient, totalPrice - fees);
CurrencyTransferLib.transferCurrency(_currency, _msgSender(), saleRecipient, totalPrice);
}

/// @dev Transfers the NFTs being claimed.
Expand All @@ -196,15 +182,10 @@ contract OpenEditionERC721 is
override
returns (uint256 startTokenId_)
{
startTokenId_ = _currentIndex;
startTokenId_ = _nextTokenId();
_safeMint(_to, _quantityBeingClaimed);
}

/// @dev Checks whether platform fee info can be set in the given execution context.
function _canSetPlatformFeeInfo() internal view override returns (bool) {
return hasRole(DEFAULT_ADMIN_ROLE, _msgSender());
}

/// @dev Checks whether primary sale recipient can be set in the given execution context.
function _canSetPrimarySaleRecipient() internal view override returns (bool) {
return hasRole(DEFAULT_ADMIN_ROLE, _msgSender());
Expand Down Expand Up @@ -249,18 +230,18 @@ contract OpenEditionERC721 is
*/
function totalMinted() external view returns (uint256) {
unchecked {
return _currentIndex - _startTokenId();
return _nextTokenId() - _startTokenId();
}
}

/// @dev The tokenId of the next NFT that will be minted / lazy minted.
function nextTokenIdToMint() external view returns (uint256) {
return _currentIndex;
return _nextTokenId();
}

/// @dev The next token ID of the NFT that can be claimed.
function nextTokenIdToClaim() external view returns (uint256) {
return _currentIndex;
return _nextTokenId();
}

/// @dev Burns `tokenId`. See {ERC721-_burn}.
Expand All @@ -287,12 +268,21 @@ contract OpenEditionERC721 is
}

/// @dev See {ERC721-setApprovalForAll}.
function setApprovalForAll(address operator, bool approved) public override onlyAllowedOperatorApproval(operator) {
function setApprovalForAll(address operator, bool approved)
public
override(IERC721AUpgradeable, ERC721AUpgradeable)
onlyAllowedOperatorApproval(operator)
{
super.setApprovalForAll(operator, approved);
}

/// @dev See {ERC721-approve}.
function approve(address operator, uint256 tokenId) public override onlyAllowedOperatorApproval(operator) {
function approve(address operator, uint256 tokenId)
public
payable
override(ERC721AUpgradeable, IERC721AUpgradeable)
onlyAllowedOperatorApproval(operator)
{
super.approve(operator, tokenId);
}

Expand All @@ -301,7 +291,7 @@ contract OpenEditionERC721 is
address from,
address to,
uint256 tokenId
) public override(ERC721AUpgradeable) onlyAllowedOperator(from) {
) public payable override(ERC721AUpgradeable, IERC721AUpgradeable) onlyAllowedOperator(from) {
super.transferFrom(from, to, tokenId);
}

Expand All @@ -310,7 +300,7 @@ contract OpenEditionERC721 is
address from,
address to,
uint256 tokenId
) public override(ERC721AUpgradeable) onlyAllowedOperator(from) {
) public payable override(ERC721AUpgradeable, IERC721AUpgradeable) onlyAllowedOperator(from) {
super.safeTransferFrom(from, to, tokenId);
}

Expand All @@ -320,31 +310,23 @@ contract OpenEditionERC721 is
address to,
uint256 tokenId,
bytes memory data
) public override(ERC721AUpgradeable) onlyAllowedOperator(from) {
) public payable override(ERC721AUpgradeable, IERC721AUpgradeable) onlyAllowedOperator(from) {
super.safeTransferFrom(from, to, tokenId, data);
}

function _dropMsgSender() internal view virtual override returns (address) {
return _msgSender();
}

function _msgSender()
internal
view
virtual
override(ContextUpgradeable, ERC2771ContextUpgradeable)
returns (address sender)
{
function _msgSenderERC721A() internal view virtual override returns (address) {
return _msgSender();
}

function _msgSender() internal view virtual override(ERC2771ContextUpgradeable) returns (address sender) {
return ERC2771ContextUpgradeable._msgSender();
}

function _msgData()
internal
view
virtual
override(ContextUpgradeable, ERC2771ContextUpgradeable)
returns (bytes calldata)
{
function _msgData() internal view virtual override(ERC2771ContextUpgradeable) returns (bytes calldata) {
return ERC2771ContextUpgradeable._msgData();
}
}
2 changes: 1 addition & 1 deletion contracts/base/Staking1155Base.sol
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ contract Staking1155Base is ContractMetadata, Multicall, Ownable, Staking1155, E
uint256 private rewardTokenBalance;

constructor(
uint80 _defaultTimeUnit,
address _defaultAdmin,
uint256 _defaultTimeUnit,
uint256 _defaultRewardsPerUnitTime,
address _stakingToken,
address _rewardToken,
Expand Down
2 changes: 1 addition & 1 deletion contracts/base/Staking20Base.sol
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ contract Staking20Base is ContractMetadata, Multicall, Ownable, Staking20 {
uint256 private rewardTokenBalance;

constructor(
uint80 _timeUnit,
address _defaultAdmin,
uint256 _timeUnit,
uint256 _rewardRatioNumerator,
uint256 _rewardRatioDenominator,
address _stakingToken,
Expand Down
Loading

0 comments on commit baad67a

Please sign in to comment.