Skip to content

Commit 61cd64e

Browse files
authored
Functions to encode bytes args (#120)
* functions to encode install and uninstall params * fix tests * encodeUninstallParams return empty bytes * encode mint params * prefix encode functions with encodeBytes * format * rename * encode params for uploadMetadata * rename
1 parent 64e5685 commit 61cd64e

14 files changed

+189
-13
lines changed

src/extension/token/metadata/DelayedRevealBatchMetadataERC721.sol

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,19 @@ contract DelayedRevealBatchMetadataERC721 is ModularExtension {
185185
emit BatchMetadataUpdate(rangeStart, _rangeEndNonInclusive - 1);
186186
}
187187

188+
/*//////////////////////////////////////////////////////////////
189+
Encode `uploadMetadata`
190+
//////////////////////////////////////////////////////////////*/
191+
192+
/// @dev Returns bytes encoded metadata, to be used in `uploadedMetadata` fallback function
193+
function encodeBytesUploadMetadata(bytes memory encryptedURI, bytes32 provenanceHash)
194+
external
195+
pure
196+
returns (bytes memory)
197+
{
198+
return abi.encode(encryptedURI, provenanceHash);
199+
}
200+
188201
/*//////////////////////////////////////////////////////////////
189202
INTERNAL FUNCTIONS
190203
//////////////////////////////////////////////////////////////*/

src/extension/token/minting/ClaimableERC1155.sol

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,36 @@ contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155
214214

215215
/// @dev Called by a Core into an Extension during the installation of the Extension.
216216
function onInstall(bytes calldata data) external {
217-
_claimableStorage().saleConfig = SaleConfig(msg.sender);
217+
address primarySaleRecipient = abi.decode(data, (address));
218+
_claimableStorage().saleConfig = SaleConfig(primarySaleRecipient);
218219
}
219220

220221
/// @dev Called by a Core into an Extension during the uninstallation of the Extension.
221222
function onUninstall(bytes calldata data) external {}
222223

224+
/*//////////////////////////////////////////////////////////////
225+
Encode install / uninstall data
226+
//////////////////////////////////////////////////////////////*/
227+
228+
/// @dev Returns bytes encoded install params, to be sent to `onInstall` function
229+
function encodeBytesOnInstall(address primarySaleRecipient) external pure returns (bytes memory) {
230+
return abi.encode(primarySaleRecipient);
231+
}
232+
233+
/// @dev Returns bytes encoded uninstall params, to be sent to `onUninstall` function
234+
function encodeBytesOnUninstall() external pure returns (bytes memory) {
235+
return "";
236+
}
237+
238+
/*//////////////////////////////////////////////////////////////
239+
Encode mint params
240+
//////////////////////////////////////////////////////////////*/
241+
242+
/// @dev Returns bytes encoded mint params, to be used in `beforeMint` fallback function
243+
function encodeBytesBeforeMintERC1155(ClaimParamsERC1155 memory params) external pure returns (bytes memory) {
244+
return abi.encode(params);
245+
}
246+
223247
/*//////////////////////////////////////////////////////////////
224248
FALLBACK FUNCTIONS
225249
//////////////////////////////////////////////////////////////*/

src/extension/token/minting/ClaimableERC20.sol

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,12 +208,36 @@ contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20, II
208208

209209
/// @dev Called by a Core into an Extension during the installation of the Extension.
210210
function onInstall(bytes calldata data) external {
211-
_claimableStorage().saleConfig = SaleConfig(msg.sender);
211+
address primarySaleRecipient = abi.decode(data, (address));
212+
_claimableStorage().saleConfig = SaleConfig(primarySaleRecipient);
212213
}
213214

214215
/// @dev Called by a Core into an Extension during the uninstallation of the Extension.
215216
function onUninstall(bytes calldata data) external {}
216217

218+
/*//////////////////////////////////////////////////////////////
219+
Encode install / uninstall data
220+
//////////////////////////////////////////////////////////////*/
221+
222+
/// @dev Returns bytes encoded install params, to be sent to `onInstall` function
223+
function encodeBytesOnInstall(address primarySaleRecipient) external pure returns (bytes memory) {
224+
return abi.encode(primarySaleRecipient);
225+
}
226+
227+
/// @dev Returns bytes encoded uninstall params, to be sent to `onUninstall` function
228+
function encodeBytesOnUninstall() external pure returns (bytes memory) {
229+
return "";
230+
}
231+
232+
/*//////////////////////////////////////////////////////////////
233+
Encode mint params
234+
//////////////////////////////////////////////////////////////*/
235+
236+
/// @dev Returns bytes encoded mint params, to be used in `beforeMint` fallback function
237+
function encodeBytesBeforeMintERC20(ClaimParamsERC20 memory params) external pure returns (bytes memory) {
238+
return abi.encode(params);
239+
}
240+
217241
/*//////////////////////////////////////////////////////////////
218242
FALLBACK FUNCTIONS
219243
//////////////////////////////////////////////////////////////*/

src/extension/token/minting/ClaimableERC721.sol

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,12 +208,36 @@ contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721,
208208

209209
/// @dev Called by a Core into an Extension during the installation of the Extension.
210210
function onInstall(bytes calldata data) external {
211-
_claimableStorage().saleConfig = SaleConfig(msg.sender);
211+
address primarySaleRecipient = abi.decode(data, (address));
212+
_claimableStorage().saleConfig = SaleConfig(primarySaleRecipient);
212213
}
213214

214215
/// @dev Called by a Core into an Extension during the uninstallation of the Extension.
215216
function onUninstall(bytes calldata data) external {}
216217

218+
/*//////////////////////////////////////////////////////////////
219+
Encode install / uninstall data
220+
//////////////////////////////////////////////////////////////*/
221+
222+
/// @dev Returns bytes encoded install params, to be sent to `onInstall` function
223+
function encodeBytesOnInstall(address primarySaleRecipient) external pure returns (bytes memory) {
224+
return abi.encode(primarySaleRecipient);
225+
}
226+
227+
/// @dev Returns bytes encoded uninstall params, to be sent to `onUninstall` function
228+
function encodeBytesOnUninstall() external pure returns (bytes memory) {
229+
return "";
230+
}
231+
232+
/*//////////////////////////////////////////////////////////////
233+
Encode mint params
234+
//////////////////////////////////////////////////////////////*/
235+
236+
/// @dev Returns bytes encoded mint params, to be used in `beforeMint` fallback function
237+
function encodeBytesBeforeMintERC721(ClaimParamsERC721 memory params) external pure returns (bytes memory) {
238+
return abi.encode(params);
239+
}
240+
217241
/*//////////////////////////////////////////////////////////////
218242
FALLBACK FUNCTIONS
219243
//////////////////////////////////////////////////////////////*/

src/extension/token/minting/MintableERC1155.sol

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,36 @@ contract MintableERC1155 is
211211

212212
/// @dev Called by a Core into an Extension during the installation of the Extension.
213213
function onInstall(bytes calldata data) external {
214-
_mintableStorage().saleConfig = SaleConfig(msg.sender);
214+
address primarySaleRecipient = abi.decode(data, (address));
215+
_mintableStorage().saleConfig = SaleConfig(primarySaleRecipient);
215216
}
216217

217218
/// @dev Called by a Core into an Extension during the uninstallation of the Extension.
218219
function onUninstall(bytes calldata data) external {}
219220

221+
/*//////////////////////////////////////////////////////////////
222+
Encode install / uninstall data
223+
//////////////////////////////////////////////////////////////*/
224+
225+
/// @dev Returns bytes encoded install params, to be sent to `onInstall` function
226+
function encodeBytesOnInstall(address primarySaleRecipient) external pure returns (bytes memory) {
227+
return abi.encode(primarySaleRecipient);
228+
}
229+
230+
/// @dev Returns bytes encoded uninstall params, to be sent to `onUninstall` function
231+
function encodeBytesOnUninstall() external pure returns (bytes memory) {
232+
return "";
233+
}
234+
235+
/*//////////////////////////////////////////////////////////////
236+
Encode mint params
237+
//////////////////////////////////////////////////////////////*/
238+
239+
/// @dev Returns bytes encoded mint params, to be used in `beforeMint` fallback function
240+
function encodeBytesBeforeMintERC1155(MintParamsERC1155 memory params) external pure returns (bytes memory) {
241+
return abi.encode(params);
242+
}
243+
220244
/*//////////////////////////////////////////////////////////////
221245
FALLBACK FUNCTIONS
222246
//////////////////////////////////////////////////////////////*/

src/extension/token/minting/MintableERC20.sol

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,36 @@ contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCall
165165

166166
/// @dev Called by a Core into an Extension during the installation of the Extension.
167167
function onInstall(bytes calldata data) external {
168-
_mintableStorage().saleConfig = SaleConfig(msg.sender);
168+
address primarySaleRecipient = abi.decode(data, (address));
169+
_mintableStorage().saleConfig = SaleConfig(primarySaleRecipient);
169170
}
170171

171172
/// @dev Called by a Core into an Extension during the uninstallation of the Extension.
172173
function onUninstall(bytes calldata data) external {}
173174

175+
/*//////////////////////////////////////////////////////////////
176+
Encode install / uninstall data
177+
//////////////////////////////////////////////////////////////*/
178+
179+
/// @dev Returns bytes encoded install params, to be sent to `onInstall` function
180+
function encodeBytesOnInstall(address primarySaleRecipient) external pure returns (bytes memory) {
181+
return abi.encode(primarySaleRecipient);
182+
}
183+
184+
/// @dev Returns bytes encoded uninstall params, to be sent to `onUninstall` function
185+
function encodeBytesOnUninstall() external pure returns (bytes memory) {
186+
return "";
187+
}
188+
189+
/*//////////////////////////////////////////////////////////////
190+
Encode mint params
191+
//////////////////////////////////////////////////////////////*/
192+
193+
/// @dev Returns bytes encoded mint params, to be used in `beforeMint` fallback function
194+
function encodeBytesBeforeMintERC20(MintParamsERC20 memory params) external pure returns (bytes memory) {
195+
return abi.encode(params);
196+
}
197+
174198
/*//////////////////////////////////////////////////////////////
175199
FALLBACK FUNCTIONS
176200
//////////////////////////////////////////////////////////////*/

src/extension/token/minting/MintableERC721.sol

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,36 @@ contract MintableERC721 is
227227

228228
/// @dev Called by a Core into an Extension during the installation of the Extension.
229229
function onInstall(bytes calldata data) external {
230-
_mintableStorage().saleConfig = SaleConfig(msg.sender);
230+
address primarySaleRecipient = abi.decode(data, (address));
231+
_mintableStorage().saleConfig = SaleConfig(primarySaleRecipient);
231232
}
232233

233234
/// @dev Called by a Core into an Extension during the uninstallation of the Extension.
234235
function onUninstall(bytes calldata data) external {}
235236

237+
/*//////////////////////////////////////////////////////////////
238+
Encode install / uninstall data
239+
//////////////////////////////////////////////////////////////*/
240+
241+
/// @dev Returns bytes encoded install params, to be sent to `onInstall` function
242+
function encodeBytesOnInstall(address primarySaleRecipient) external pure returns (bytes memory) {
243+
return abi.encode(primarySaleRecipient);
244+
}
245+
246+
/// @dev Returns bytes encoded uninstall params, to be sent to `onUninstall` function
247+
function encodeBytesOnUninstall() external pure returns (bytes memory) {
248+
return "";
249+
}
250+
251+
/*//////////////////////////////////////////////////////////////
252+
Encode mint params
253+
//////////////////////////////////////////////////////////////*/
254+
255+
/// @dev Returns bytes encoded mint params, to be used in `beforeMint` fallback function
256+
function encodeBytesBeforeMintERC721(MintParamsERC721 memory params) external pure returns (bytes memory) {
257+
return abi.encode(params);
258+
}
259+
236260
/*//////////////////////////////////////////////////////////////
237261
FALLBACK FUNCTIONS
238262
//////////////////////////////////////////////////////////////*/

src/extension/token/royalty/RoyaltyERC721.sol

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,20 @@ contract RoyaltyERC721 is ModularExtension, IInstallationCallback {
8888
config.registerInstallationCallback = true;
8989
}
9090

91+
/*//////////////////////////////////////////////////////////////
92+
Encode install / uninstall data
93+
//////////////////////////////////////////////////////////////*/
94+
95+
/// @dev Returns bytes encoded install params, to be sent to `onInstall` function
96+
function encodeBytesOnInstall(address royaltyRecipient, uint256 royaltyBps) external pure returns (bytes memory) {
97+
return abi.encode(royaltyRecipient, royaltyBps);
98+
}
99+
100+
/// @dev Returns bytes encoded uninstall params, to be sent to `onUninstall` function
101+
function encodeBytesOnUninstall() external pure returns (bytes memory) {
102+
return "";
103+
}
104+
91105
/*//////////////////////////////////////////////////////////////
92106
CALLBACK FUNCTIONS
93107
//////////////////////////////////////////////////////////////*/

test/extension/minting/ClaimableERC1155.t.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ contract ClaimableERC1155Test is Test {
105105
extensionImplementation = new ClaimableERC1155();
106106

107107
// install extension
108+
bytes memory encodedInstallParams = abi.encode(owner);
108109
vm.prank(owner);
109-
core.installExtension(address(extensionImplementation), "");
110+
core.installExtension(address(extensionImplementation), encodedInstallParams);
110111

111112
// Setup signature vars
112113
typehashClaimRequest = keccak256(

test/extension/minting/ClaimableERC20.t.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,9 @@ contract ClaimableERC20Test is Test {
104104
extensionImplementation = new ClaimableERC20();
105105

106106
// install extension
107+
bytes memory encodedInstallParams = abi.encode(owner);
107108
vm.prank(owner);
108-
core.installExtension(address(extensionImplementation), "");
109+
core.installExtension(address(extensionImplementation), encodedInstallParams);
109110

110111
// Setup signature vars
111112
typehashClaimRequest = keccak256(

0 commit comments

Comments
 (0)