diff --git a/packages/contracts/src/GovernancePluginsSetup.sol b/packages/contracts/src/GovernancePluginsSetup.sol index 5945b05..399f6ef 100644 --- a/packages/contracts/src/GovernancePluginsSetup.sol +++ b/packages/contracts/src/GovernancePluginsSetup.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.8; import {PermissionLib} from "@aragon/osx/core/permission/PermissionLib.sol"; import {DAO} from "@aragon/osx/core/dao/DAO.sol"; +import {IDAO} from "@aragon/osx/core/dao/IDAO.sol"; import {PluginSetup, IPluginSetup} from "@aragon/osx/framework/plugin/setup/PluginSetup.sol"; import {MemberAccessPlugin} from "./MemberAccessPlugin.sol"; import {MemberAccessExecuteCondition} from "./MemberAccessExecuteCondition.sol"; @@ -41,11 +42,9 @@ contract GovernancePluginsSetup is PluginSetup { // Deploy the main voting plugin mainVotingPlugin = createERC1967Proxy( mainVotingPluginImplementation, - abi.encodeWithSelector( - MainVotingPlugin.initialize.selector, - _dao, - _votingSettings, - _initialEditors + abi.encodeCall( + MainVotingPlugin.initialize, + (IDAO(_dao), _votingSettings, _initialEditors) ) ); @@ -56,7 +55,7 @@ contract GovernancePluginsSetup is PluginSetup { address _memberAccessPlugin = createERC1967Proxy( memberAccessPluginImplementation, - abi.encodeWithSelector(MemberAccessPlugin.initialize.selector, _dao, _multisigSettings) + abi.encodeCall(MemberAccessPlugin.initialize, (IDAO(_dao), _multisigSettings)) ); // Condition contract (member access plugin execute) diff --git a/packages/contracts/src/MemberAccessExecuteCondition.sol b/packages/contracts/src/MemberAccessExecuteCondition.sol index 37063ac..5d6d84c 100644 --- a/packages/contracts/src/MemberAccessExecuteCondition.sol +++ b/packages/contracts/src/MemberAccessExecuteCondition.sol @@ -17,10 +17,8 @@ contract MemberAccessExecuteCondition is PermissionCondition { targetContract = _targetContract; } - function getSelector(bytes memory _data) public pure returns (bytes4 sig) { - assembly { - sig := mload(add(_data, 32)) - } + function getSelector(bytes calldata _data) public pure returns (bytes4 selector) { + selector = bytes4(_data[:4]); } /// @notice Checks whether the current action wants to grant membership on the predefined address diff --git a/packages/contracts/src/SpacePluginSetup.sol b/packages/contracts/src/SpacePluginSetup.sol index 06d8e8a..21e033e 100644 --- a/packages/contracts/src/SpacePluginSetup.sol +++ b/packages/contracts/src/SpacePluginSetup.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.8; +import {IDAO} from "@aragon/osx/core/dao/IDAO.sol"; import {PermissionLib} from "@aragon/osx/core/permission/PermissionLib.sol"; import {PluginSetup, IPluginSetup} from "@aragon/osx/framework/plugin/setup/PluginSetup.sol"; import {SpacePlugin} from "./SpacePlugin.sol"; @@ -31,11 +32,9 @@ contract SpacePluginSetup is PluginSetup { // Deploy new plugin instance plugin = createERC1967Proxy( pluginImplementation, - abi.encodeWithSelector( - SpacePlugin.initialize.selector, - _dao, - _firstBlockContentUri, - _predecessorAddress + abi.encodeCall( + SpacePlugin.initialize, + (IDAO(_dao), _firstBlockContentUri, _predecessorAddress) ) );