From a0eb62400927080855f4d0358972fa3d766a35fb Mon Sep 17 00:00:00 2001 From: AutoPR Date: Sun, 30 Apr 2023 19:08:34 +0000 Subject: [PATCH 1/2] Update INFTExtension interface --- contracts/factory/extensions/INFTExtension.sol | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 contracts/factory/extensions/INFTExtension.sol diff --git a/contracts/factory/extensions/INFTExtension.sol b/contracts/factory/extensions/INFTExtension.sol new file mode 100644 index 00000000..3879b918 --- /dev/null +++ b/contracts/factory/extensions/INFTExtension.sol @@ -0,0 +1,5 @@ +pragma solidity ^0.8.0; + +interface INFTExtension { + function extensionType() external view returns (string memory); +} \ No newline at end of file From e886032b4806a5950a2d2e08d0806b52af1fc970 Mon Sep 17 00:00:00 2001 From: AutoPR Date: Sun, 30 Apr 2023 19:10:23 +0000 Subject: [PATCH 2/2] Modify the addExtension function in MetaverseNFT --- contracts/factory/MetaverseNFT.sol | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 contracts/factory/MetaverseNFT.sol diff --git a/contracts/factory/MetaverseNFT.sol b/contracts/factory/MetaverseNFT.sol new file mode 100644 index 00000000..018c067f --- /dev/null +++ b/contracts/factory/MetaverseNFT.sol @@ -0,0 +1,12 @@ +function addExtension(address extension) public onlyOwner { + require(!extensionExists[extension], "M:EXTENSION_ALREADY_ADDED"); + require(extension != address(this), "M:EXTENSION_CAN_NOT_BE_THIS"); + require(extension != address(0), "M:EXTENSION_CAN_NOT_BE_ZERO"); + require( + INFTExtension(extension).extensionType() != bytes32(0), + "M:EXTENSION_IS_NOT_NFT_EXTENSION" + ); + uint256 id = _extensions.add(extension); + extensionExists[extension] = true; + emit ExtensionAdded(extension, id); +} \ No newline at end of file