@@ -23,6 +23,7 @@ import "./../colony/ColonyAuthority.sol";
2323import "./../colony/IColony.sol " ;
2424import "./ColonyNetworkStorage.sol " ;
2525import "./IColonyNetwork.sol " ;
26+ import "./../metaTxToken/MetaTxToken.sol " ;
2627
2728
2829contract ColonyNetworkDeployer is ColonyNetworkStorage {
@@ -93,6 +94,43 @@ contract ColonyNetworkDeployer is ColonyNetworkStorage {
9394 return colonyAddress;
9495 }
9596
97+ function createColonyForFrontend (
98+ address _tokenAddress ,
99+ string memory _name ,
100+ string memory _symbol ,
101+ uint8 _decimals ,
102+ uint256 _version ,
103+ string memory _colonyName ,
104+ string memory _metadata
105+ )
106+ public stoppable
107+ returns (address token , address colony )
108+ {
109+ // Create Token
110+ MetaTxToken token;
111+ if (_tokenAddress == address (0x0 )){
112+ token = MetaTxToken (IColonyNetwork (address (this )).deployTokenViaNetwork (_name, _symbol, _decimals));
113+ emit TokenDeployed (address (token));
114+ } else {
115+ token = MetaTxToken (_tokenAddress);
116+ }
117+
118+ // Create Colony
119+ address colonyAddress = createColony (address (token), _version, _colonyName, _metadata);
120+
121+ // Extra token bookkeeping if we deployed it
122+ if (_tokenAddress == address (0x0 )){
123+ // Deploy Authority
124+ address [] memory allowedToTransfer;
125+ address tokenAuthorityAddress = IColonyNetwork (address (this )).deployTokenAuthority (address (token), colonyAddress, allowedToTransfer);
126+ // Set Authority
127+ token.setAuthority (DSAuthority (tokenAuthorityAddress));
128+ token.setOwner (msgSender ());
129+ }
130+
131+ return (address (token), colonyAddress);
132+ }
133+
96134 function deployColony (address _tokenAddress , uint256 _version ) internal returns (address ) {
97135 require (_tokenAddress != address (0x0 ), "colony-token-invalid-address " );
98136 require (colonyVersionResolver[_version] != address (0x00 ), "colony-network-invalid-version " );
0 commit comments