diff --git a/scripts/add-contribution.js b/scripts/add-contribution.js index cd326e2..8a6d84b 100644 --- a/scripts/add-contribution.js +++ b/scripts/add-contribution.js @@ -1,16 +1,15 @@ const promptly = require('promptly'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - const kredits = await new Kredits(provider, provider.getSigner()).init(); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } console.log(`Using Contributions at: ${kredits.Contribution.contract.address}`); diff --git a/scripts/add-contributor.js b/scripts/add-contributor.js index 4b82593..ced62af 100644 --- a/scripts/add-contributor.js +++ b/scripts/add-contributor.js @@ -1,9 +1,6 @@ const promptly = require('promptly'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); async function prompt(message, options) { if (!options) { @@ -13,11 +10,13 @@ async function prompt(message, options) { } module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - const kredits = await new Kredits(provider, provider.getSigner()).init(); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } console.log(`Using contributors at: ${kredits.Contributor.contract.address}`); diff --git a/scripts/add-proposal.js b/scripts/add-proposal.js index 42df6d4..935b461 100644 --- a/scripts/add-proposal.js +++ b/scripts/add-proposal.js @@ -1,16 +1,15 @@ const promptly = require('promptly'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - const kredits = await new Kredits(provider, provider.getSigner()).init(); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } console.log(`Using Proposal at: ${kredits.Proposal.contract.address}`); diff --git a/scripts/cli.js b/scripts/cli.js index 6f63504..0d6753f 100644 --- a/scripts/cli.js +++ b/scripts/cli.js @@ -1,18 +1,10 @@ const REPL = require('repl'); const promptly = require('promptly'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - - new Kredits(provider, provider.getSigner()).init().then(async function(kredits) { + initKredits(web3).then(async function(kredits) { let contractName = await promptly.prompt('Contract Name: '); const contractWrapper = kredits[contractName]; diff --git a/scripts/helpers/init_kredits.js b/scripts/helpers/init_kredits.js new file mode 100644 index 0000000..2ac17e2 --- /dev/null +++ b/scripts/helpers/init_kredits.js @@ -0,0 +1,25 @@ +const ethers = require('ethers'); +const getNetworkId = require('./networkid.js') +const Kredits = require('../../lib/kredits'); + +module.exports = async function(web3) { + return new Promise((resolve, reject) => { + getNetworkId(web3).then(networkId => { + const provider = new ethers.providers.Web3Provider( + web3.currentProvider, { chainId: parseInt(networkId) } + ); + let signer = provider.getSigner(); + // checking if siner supports signing transactions + signer.getAddress().then(_ => { + new Kredits(provider, signer).init().then(kredits => { + resolve(kredits); + }) + }).catch(e => { + console.log(`Signer account not available; readonly connection (${e.message}`); + new Kredits(provider, null).init().then(kredits => { + resolve(kredits); + }) + }) + }) + }); +} diff --git a/scripts/list-contributions.js b/scripts/list-contributions.js index 9b7acb3..28e1734 100644 --- a/scripts/list-contributions.js +++ b/scripts/list-contributions.js @@ -1,17 +1,16 @@ const promptly = require('promptly'); const Table = require('cli-table'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - const kredits = await new Kredits(provider, provider.getSigner()).init(); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } console.log(`Using Contribution at: ${kredits.Contribution.contract.address}`); diff --git a/scripts/list-contributors.js b/scripts/list-contributors.js index 27b3a4f..5cf77aa 100644 --- a/scripts/list-contributors.js +++ b/scripts/list-contributors.js @@ -1,17 +1,16 @@ const promptly = require('promptly'); const Table = require('cli-table'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - const kredits = await new Kredits(provider, provider.getSigner()).init(); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } console.log(`Using Contributor at: ${kredits.Contributor.contract.address}`); diff --git a/scripts/list-proposals.js b/scripts/list-proposals.js index 2b04115..701ce83 100644 --- a/scripts/list-proposals.js +++ b/scripts/list-proposals.js @@ -1,17 +1,16 @@ const promptly = require('promptly'); const Table = require('cli-table'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - const kredits = await new Kredits(provider, provider.getSigner()).init(); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } console.log(`Using Proposal at: ${kredits.Proposal.contract.address}`); diff --git a/scripts/repl.js b/scripts/repl.js index 5929e0b..96c4ab8 100644 --- a/scripts/repl.js +++ b/scripts/repl.js @@ -1,9 +1,6 @@ const REPL = require('repl'); -const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); - -const getNetworkId = require('./helpers/networkid.js') +const initKredits = require('./helpers/init_kredits.js'); function promiseEval (repl) { const currentEval = repl.eval; @@ -21,21 +18,22 @@ function promiseEval (repl) { } module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } - new Kredits(provider, provider.getSigner()).init().then((kredits) => { - console.log(`Defined variables: kredits, web3`); - let r = REPL.start(); - r.context.kredits = kredits; - r.context.web3 = web3; - r.eval = promiseEval(r); + console.log(`Defined variables: kredits, web3`); + let r = REPL.start(); + r.context.kredits = kredits; + r.context.web3 = web3; + r.eval = promiseEval(r); - r.on('exit', () => { - console.log('Bye'); - callback(); - }); + r.on('exit', () => { + console.log('Bye'); + callback(); }); } diff --git a/scripts/seeds.js b/scripts/seeds.js index 2531a6a..b3641e7 100644 --- a/scripts/seeds.js +++ b/scripts/seeds.js @@ -2,17 +2,17 @@ const path = require('path'); const each = require('async-each-series'); const ethers = require('ethers'); -const Kredits = require('../lib/kredits'); -const getNetworkId = require('./helpers/networkid.js') - +const initKredits = require('./helpers/init_kredits.js'); const seeds = require(path.join(__dirname, '..', '/config/seeds.js')); module.exports = async function(callback) { - const networkId = await getNetworkId(web3) - const provider = new ethers.providers.Web3Provider( - web3.currentProvider, { chainId: parseInt(networkId) } - ); - const kredits = await new Kredits(provider, provider.getSigner()).init(); + let kredits; + try { + kredits = await initKredits(web3); + } catch(e) { + callback(e); + return; + } let fundingAmount = 2; each(seeds.funds, (address, next) => {