Skip to content

Commit

Permalink
remove ownable from managerhelper. up to 2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
artman325 committed Dec 29, 2022
1 parent 29d6e44 commit a19cf21
Show file tree
Hide file tree
Showing 6 changed files with 8,762 additions and 28,867 deletions.
3 changes: 1 addition & 2 deletions contracts/ReleaseManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,6 @@ contract ReleaseManager is OwnableUpgradeable, IReleaseManager {
function setWarnings(address factoryAddress, string memory url) public onlyOwner {
warnings[factoryAddress] = url;
}



// which adds to instances[address] which looks for msg.sender or _msgSender() is the factory address if it supports EIP2771 just in case.
Expand All @@ -188,7 +187,7 @@ contract ReleaseManager is OwnableUpgradeable, IReleaseManager {
return (instances[instanceAddress].factoryAddress == address(0) ? false : true);
}

function checkFactory(address factoryAddress) external view returns(bool) {
function checkFactory(address factoryAddress) external view override returns(bool) {
return (factories[factoryAddress].factoryIndex == 0 ? false : true);
}

Expand Down
48 changes: 27 additions & 21 deletions contracts/ReleaseManagerHelper.sol
Original file line number Diff line number Diff line change
@@ -1,35 +1,41 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "./interfaces/IReleaseManager.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Address.sol";

contract ReleaseManagerHelper is Ownable{
abstract contract ReleaseManagerHelper {
using Address for address;
address public releaseManager;
address private _releaseManager;

error RegisterReleaseManagerFirst();
error ReleaseManagerIsNoneContract(address addr);
error ReleaseManagerAlreadySetup(address addr);

function registerInstance(address stateContractAddress) internal {
if (releaseManager == address(0)) {
revert RegisterReleaseManagerFirst();
error ReleaseManagerInvalid(address addr);

/**
* @notice need to register release manager when factory(CommunityCoinFactory, IncomeContractFactory, etc) deployed
*/
constructor(address releaseManagerAddr) {
if (
releaseManagerAddr.isContract() == false ||
releaseManagerAddr == address(0)
) {
revert ReleaseManagerInvalid(releaseManagerAddr);
}
IReleaseManager(releaseManager).registerInstance(stateContractAddress);

_releaseManager = releaseManagerAddr;
}

function registerReleaseManager(address releaseManager_) public onlyOwner {
if (releaseManager_.isContract() == false) {
revert ReleaseManagerIsNoneContract(releaseManager_);
}
if (releaseManager != address(0)) {
revert ReleaseManagerAlreadySetup(releaseManager_);
}

releaseManager = releaseManager_;
/**
* @notice view release manager address that was regsted when factory deployed
*/
function releaseManager() public view returns(address) {
return _releaseManager;
}

/**
* @param instanceAddress address that was produced by factory need to be registered in ReleaseManager. Usually such method should be called after produce/produceDeterministic
*/
function registerInstance(address instanceAddress) internal {
IReleaseManager(_releaseManager).registerInstance(instanceAddress);
}

}
7 changes: 5 additions & 2 deletions contracts/mocks/examples/FactoryEx1.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,12 @@ contract FactoryEx1 is Ownable, CostManagerFactoryHelper, ReleaseManagerHelper {
event InstanceCreated(address instance, uint256 instancesCount);

constructor(
address impl
address impl,
address costManagerAddress,
address releaseManagerAddress
)
CostManagerFactoryHelper(address(0))
CostManagerFactoryHelper(costManagerAddress)
ReleaseManagerHelper(releaseManagerAddress)
{
implementation = impl;
}
Expand Down
Loading

0 comments on commit a19cf21

Please sign in to comment.