Skip to content

Commit

Permalink
Airdrop: contract metadata extension (#640)
Browse files Browse the repository at this point in the history
add contract metadata extension
  • Loading branch information
kumaryash90 committed Apr 25, 2024
1 parent 444483c commit 5c96c22
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
11 changes: 9 additions & 2 deletions contracts/prebuilts/unaudited/airdrop/Airdrop.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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
//////////////////////////////////////////////////////////////*/
Expand Down Expand Up @@ -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);
}

/*///////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -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";
Expand Down
2 changes: 1 addition & 1 deletion src/test/airdrop/Airdrop.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
2 changes: 1 addition & 1 deletion src/test/benchmark/AirdropBenchmark.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down

0 comments on commit 5c96c22

Please sign in to comment.