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
kumaryash90 authored Apr 25, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 444483c commit 5c96c22
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
@@ -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";
2 changes: 1 addition & 1 deletion src/test/airdrop/Airdrop.t.sol
Original file line number Diff line number Diff line change
@@ -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))
2 changes: 1 addition & 1 deletion src/test/benchmark/AirdropBenchmark.t.sol
Original file line number Diff line number Diff line change
@@ -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))

0 comments on commit 5c96c22

Please sign in to comment.