diff --git a/contracts/prebuilts/unaudited/airdrop/Airdrop.sol b/contracts/prebuilts/unaudited/airdrop/Airdrop.sol index e7c7d5a76..8e6b48ed4 100644 --- a/contracts/prebuilts/unaudited/airdrop/Airdrop.sol +++ b/contracts/prebuilts/unaudited/airdrop/Airdrop.sol @@ -20,12 +20,13 @@ import "@solady/src/utils/SignatureCheckerLib.sol"; import { Initializable } from "../../../extension/Initializable.sol"; import { Ownable } from "../../../extension/Ownable.sol"; +import { ContractMetadata } from "../../../extension/ContractMetadata.sol"; import "../../../eip/interface/IERC20.sol"; import "../../../eip/interface/IERC721.sol"; import "../../../eip/interface/IERC1155.sol"; -contract Airdrop is EIP712, Initializable, Ownable { +contract Airdrop is EIP712, Initializable, Ownable, ContractMetadata { /*/////////////////////////////////////////////////////////////// State, constants & structs //////////////////////////////////////////////////////////////*/ @@ -127,8 +128,9 @@ contract Airdrop is EIP712, Initializable, Ownable { _disableInitializers(); } - function initialize(address _defaultAdmin) external initializer { + function initialize(address _defaultAdmin, string memory _contractURI) external initializer { _setupOwner(_defaultAdmin); + _setupContractURI(_contractURI); } /*/////////////////////////////////////////////////////////////// @@ -510,6 +512,11 @@ contract Airdrop is EIP712, Initializable, Ownable { return msg.sender == owner(); } + /// @dev Checks whether contract metadata can be set in the given execution context. + function _canSetContractURI() internal view virtual override returns (bool) { + return msg.sender == owner(); + } + /// @dev Domain name and version for EIP-712 function _domainNameAndVersion() internal pure override returns (string memory name, string memory version) { name = "Airdrop"; diff --git a/src/test/airdrop/Airdrop.t.sol b/src/test/airdrop/Airdrop.t.sol index 694aac542..7fe129335 100644 --- a/src/test/airdrop/Airdrop.t.sol +++ b/src/test/airdrop/Airdrop.t.sol @@ -79,7 +79,7 @@ contract AirdropTest is BaseTest { address impl = address(new Airdrop()); - airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer)))))); + airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer, "")))))); domainSeparator = keccak256( abi.encode(TYPE_HASH_EIP712, NAME_HASH, VERSION_HASH, block.chainid, address(airdrop)) diff --git a/src/test/benchmark/AirdropBenchmark.t.sol b/src/test/benchmark/AirdropBenchmark.t.sol index 865f09c01..76e42ad91 100644 --- a/src/test/benchmark/AirdropBenchmark.t.sol +++ b/src/test/benchmark/AirdropBenchmark.t.sol @@ -78,7 +78,7 @@ contract AirdropBenchmarkTest is BaseTest { address impl = address(new Airdrop()); - airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer)))))); + airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer, "")))))); domainSeparator = keccak256( abi.encode(TYPE_HASH_EIP712, NAME_HASH, VERSION_HASH, block.chainid, address(airdrop))