Skip to content

Commit 5c96c22

Browse files
authored
Airdrop: contract metadata extension (#640)
add contract metadata extension
1 parent 444483c commit 5c96c22

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

contracts/prebuilts/unaudited/airdrop/Airdrop.sol

+9-2
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ import "@solady/src/utils/SignatureCheckerLib.sol";
2020

2121
import { Initializable } from "../../../extension/Initializable.sol";
2222
import { Ownable } from "../../../extension/Ownable.sol";
23+
import { ContractMetadata } from "../../../extension/ContractMetadata.sol";
2324

2425
import "../../../eip/interface/IERC20.sol";
2526
import "../../../eip/interface/IERC721.sol";
2627
import "../../../eip/interface/IERC1155.sol";
2728

28-
contract Airdrop is EIP712, Initializable, Ownable {
29+
contract Airdrop is EIP712, Initializable, Ownable, ContractMetadata {
2930
/*///////////////////////////////////////////////////////////////
3031
State, constants & structs
3132
//////////////////////////////////////////////////////////////*/
@@ -127,8 +128,9 @@ contract Airdrop is EIP712, Initializable, Ownable {
127128
_disableInitializers();
128129
}
129130

130-
function initialize(address _defaultAdmin) external initializer {
131+
function initialize(address _defaultAdmin, string memory _contractURI) external initializer {
131132
_setupOwner(_defaultAdmin);
133+
_setupContractURI(_contractURI);
132134
}
133135

134136
/*///////////////////////////////////////////////////////////////
@@ -510,6 +512,11 @@ contract Airdrop is EIP712, Initializable, Ownable {
510512
return msg.sender == owner();
511513
}
512514

515+
/// @dev Checks whether contract metadata can be set in the given execution context.
516+
function _canSetContractURI() internal view virtual override returns (bool) {
517+
return msg.sender == owner();
518+
}
519+
513520
/// @dev Domain name and version for EIP-712
514521
function _domainNameAndVersion() internal pure override returns (string memory name, string memory version) {
515522
name = "Airdrop";

src/test/airdrop/Airdrop.t.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ contract AirdropTest is BaseTest {
7979

8080
address impl = address(new Airdrop());
8181

82-
airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer))))));
82+
airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer, ""))))));
8383

8484
domainSeparator = keccak256(
8585
abi.encode(TYPE_HASH_EIP712, NAME_HASH, VERSION_HASH, block.chainid, address(airdrop))

src/test/benchmark/AirdropBenchmark.t.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ contract AirdropBenchmarkTest is BaseTest {
7878

7979
address impl = address(new Airdrop());
8080

81-
airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer))))));
81+
airdrop = Airdrop(payable(address(new TWProxy(impl, abi.encodeCall(Airdrop.initialize, (signer, ""))))));
8282

8383
domainSeparator = keccak256(
8484
abi.encode(TYPE_HASH_EIP712, NAME_HASH, VERSION_HASH, block.chainid, address(airdrop))

0 commit comments

Comments
 (0)