diff options
First naive pass at implementing etherscan provider (not working)
Committing and pushing to get feedback.
Diffstat (limited to 'app/scripts/background.js')
-rw-r--r-- | app/scripts/background.js | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/app/scripts/background.js b/app/scripts/background.js index 772c1de89..cc137616a 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -7,6 +7,7 @@ const extend = require('xtend') const EthStore = require('eth-store') const PortStream = require('./lib/port-stream.js') const MetaMaskProvider = require('web3-provider-engine/zero.js') +const EtherscanProvider = require('web3-provider-engine/subproviders/etherscan') const IdentityStore = require('./lib/idStore') const createTxNotification = require('./lib/tx-notification.js') const configManager = require('./lib/config-manager-singleton') @@ -36,8 +37,9 @@ function handleEthRpcRequestStream(stream){ // state and network // +var providerConfig = configManager.getProvider() var idStore = new IdentityStore() -var zeroClient = MetaMaskProvider({ +var providerOpts = { rpcUrl: configManager.getCurrentRpcAddress(), getAccounts: function(cb){ var selectedAddress = idStore.getSelectedAddress() @@ -46,14 +48,23 @@ var zeroClient = MetaMaskProvider({ }, approveTransaction: addUnconfirmedTx, signTransaction: idStore.signTransaction.bind(idStore), -}) +} +var provider +switch (providerConfig.type) { + case 'rpc': + provider = MetaMaskProvider(providerOpts) + break + case 'etherscan': + provider = EtherscanProvider(providerOpts) + break +} // log new blocks -zeroClient.on('block', function(block){ +provider.on('block', function(block){ console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex')) }) -var ethStore = new EthStore(zeroClient) +var ethStore = new EthStore(provider) idStore.setStore(ethStore) function getState(){ @@ -68,7 +79,7 @@ function getState(){ // handle rpc requests function onRpcRequest(remoteStream, payload){ // console.log('MetaMaskPlugin - incoming payload:', payload) - zeroClient.sendAsync(payload, function onPayloadHandled(err, response){ + provider.sendAsync(payload, function onPayloadHandled(err, response){ // provider engine errors are included in response objects if (!payload.isMetamaskInternal) console.log('MetaMaskPlugin - RPC complete:', payload, '->', response) try { @@ -111,6 +122,7 @@ function linkDnode(stream){ var connection = Dnode({ getState: function(cb){ cb(null, getState()) }, setRpcTarget: setRpcTarget, + useEtherscanProvider: useEtherscanProvider, // forward directly to idStore createNewVault: idStore.createNewVault.bind(idStore), recoverFromSeed: idStore.recoverFromSeed.bind(idStore), @@ -179,6 +191,11 @@ function setRpcTarget(rpcTarget){ chrome.runtime.reload() } +function useEtherscanProvider() { + configManager.useEtherscanProvider() + chrome.runtime.reload() +} + // util function jsonParseStream(){ |