diff --git a/lib/kredits.js b/lib/kredits.js index d477274..69710fe 100644 --- a/lib/kredits.js +++ b/lib/kredits.js @@ -41,12 +41,15 @@ class Kredits { this.abis = abis || ABIS; this.ipfs = new IPFS(ipfsConfig); this.contracts = {}; + this.networkId = null; } init (names) { let contractsToLoad = names || APP_CONTRACTS; return this.provider.getNetwork().then(network => { - this.addresses['Kernel'] = this.addresses['Kernel'] || DaoAddresses[network.chainId.toString()]; + this.networkId = network.chainId.toString(); + this.addresses['Kernel'] = this.addresses['Kernel'] || DaoAddresses[this.networkId]; + let addressPromises = contractsToLoad.map((contractName) => { return this.Kernel.getApp(contractName).then((address) => { this.addresses[contractName] = address; diff --git a/lib/utils/ipfs.js b/lib/utils/ipfs.js index 105379f..7d1e090 100644 --- a/lib/utils/ipfs.js +++ b/lib/utils/ipfs.js @@ -10,6 +10,14 @@ class IPFS { this._config = config; } + get config () { + return this._config; + } + + get peerId () { + return this._ipfsAPI.id(); + } + catAndMerge (data, deserialize) { // if no hash details are found simply return the data; nothing to merge if (!data.hashSize || data.hashSize === 0) { diff --git a/lib/utils/preflight.js b/lib/utils/preflight.js index 9e298ba..e272f06 100644 --- a/lib/utils/preflight.js +++ b/lib/utils/preflight.js @@ -4,22 +4,28 @@ class Preflight { } check () { - return this.kredits.ipfs._ipfsAPI.id() + return this.kredits.ipfs.peerId() .catch((error) => { - throw new Error(`IPFS node not available; config: ${JSON.stringify(this.kredits.ipfs.config)} - ${error.message}`); + const ipfsConfig = JSON.stringify(this.kredits.ipfs.config); + throw new Error(`IPFS node not available; config: ${ipfsConfig} - ${error.message}`); }) .then(() => { let promises = Object.keys(this.kredits.contracts).map((name) => { - let contractWrapper = this.kredits.contracts[name]; - return this.kredits.provider.getCode(contractWrapper.contract.address).then((code) => { + let address = this.kredits.contracts[name].contract.address; + + // TODO: I think this throws the error: Error: contract not deployed + // I guess we don't need that if check anymore... + return this.kredits.provider.getCode(address).then((code) => { // not sure if we always get the same return value if the code is not available // so checking if it is < 5 long if (code === '0x00' || code.length < 5) { - throw new Error(`Contract for: ${name} not found at ${contractWrapper.contract.address} on network ${this.kredits.provider.chainId}`); + throw new Error(`Contract for: ${name} not found at ${address} on network ${this.kredits.networkId}`); } + return true; }); }); + return Promise.all(promises); }); }