From f5dc8f86cf7fc29251eded7b8ae7cb29a015ef37 Mon Sep 17 00:00:00 2001 From: bumi Date: Sun, 22 Apr 2018 18:40:59 +0200 Subject: [PATCH 1/2] Use infura hosted provider if web3 is not available If the user does not have metamask or similar (no web3 provider is availale) we will load data from the infura node. No signer is available for the infura node but the ethers provider would throw an error if we try to access it - so this moves the decision of choosing the provider to the ethProvider function. --- app/services/kredits.js | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/app/services/kredits.js b/app/services/kredits.js index ca1e74a..96f1f7b 100644 --- a/app/services/kredits.js +++ b/app/services/kredits.js @@ -38,28 +38,20 @@ export default Service.extend({ ); ethProvider.listAccounts().then((accounts) => { this.set('currentUserAccounts', accounts); - resolve(ethProvider); + resolve(ethProvider, ethProvider.getSigner()); }); } else { console.debug('[kredits] Creating new instance from npm module class'); networkId = parseInt(config.contractMetadata.networkId); - ethProvider = new ethers.providers.JsonRpcProvider( - config.web3ProviderUrl, - { chainId: networkId } - ); - resolve(ethProvider); + console.log(networkId) + ethProvider = new ethers.providers.InfuraProvider({ chainId: networkId, name: 'kovan' }); + resolve(ethProvider, null); } }); }, setup() { - return this.getEthProvider().then((ethProvider) => { - let ethSigner; - - if (ethProvider.getSigner) { - ethSigner = ethProvider.getSigner(); - } - + return this.getEthProvider().then((ethProvider, ethSigner) => { let kredits = new Kredits(ethProvider, ethSigner); return kredits .init() -- 2.50.1 From a75bcc6a59c4484506563237d0ee2102855d4e01 Mon Sep 17 00:00:00 2001 From: bumi Date: Sun, 22 Apr 2018 20:25:58 +0200 Subject: [PATCH 2/2] Add configurable network name This is required for the infura provider --- app/services/kredits.js | 6 ++++-- config/environment.js | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/services/kredits.js b/app/services/kredits.js index 96f1f7b..4a92d0c 100644 --- a/app/services/kredits.js +++ b/app/services/kredits.js @@ -29,6 +29,7 @@ export default Service.extend({ return new RSVP.Promise((resolve) => { let ethProvider; let networkId; + let networkName; if (typeof window.web3 !== 'undefined') { console.debug('[kredits] Using user-provided instance, e.g. from Mist browser or Metamask'); networkId = parseInt(window.web3.version.network); @@ -43,8 +44,9 @@ export default Service.extend({ } else { console.debug('[kredits] Creating new instance from npm module class'); networkId = parseInt(config.contractMetadata.networkId); - console.log(networkId) - ethProvider = new ethers.providers.InfuraProvider({ chainId: networkId, name: 'kovan' }); + networkName = config.contractMetadata.networkName; + console.log(networkName); + ethProvider = new ethers.providers.InfuraProvider({ chainId: networkId, name: networkName }); resolve(ethProvider, null); } }); diff --git a/config/environment.js b/config/environment.js index 1ecf71b..0e11806 100644 --- a/config/environment.js +++ b/config/environment.js @@ -35,7 +35,7 @@ module.exports = function(environment) { ] }, - contractMetadata: { networkId: '42' }, + contractMetadata: { networkId: '42', networkName: 'kovan' }, web3ProviderUrl: 'https://parity.kosmos.org:8545', @@ -81,6 +81,9 @@ module.exports = function(environment) { if (process.env.NETWORK_ID) { ENV.contractMetadata['networkId'] = process.env.NETWORK_ID; } + if (process.env.NETWORK_NAME) { + ENV.contractMetadata['networkName'] = process.env.NETWORK_NAME; + } if (process.env.WEB3_PROVIDER_URL) { ENV.web3ProviderUrl = process.env.WEB3_PROVIDER_URL; } -- 2.50.1