diff options
author | Dan Finlay <dan@danfinlay.com> | 2016-05-11 06:37:13 +0800 |
---|---|---|
committer | Dan Finlay <dan@danfinlay.com> | 2016-05-11 06:37:13 +0800 |
commit | d8bee4f5992c5a1d0851e87c49e13c97d9279411 (patch) | |
tree | 56f225263d4e8ff3e0b106afc7e28770075e92e9 /ui | |
parent | ab273ba4443f83d81d3530bc18d14b1795f54d0b (diff) | |
download | tangerine-wallet-browser-d8bee4f5992c5a1d0851e87c49e13c97d9279411.tar tangerine-wallet-browser-d8bee4f5992c5a1d0851e87c49e13c97d9279411.tar.gz tangerine-wallet-browser-d8bee4f5992c5a1d0851e87c49e13c97d9279411.tar.bz2 tangerine-wallet-browser-d8bee4f5992c5a1d0851e87c49e13c97d9279411.tar.lz tangerine-wallet-browser-d8bee4f5992c5a1d0851e87c49e13c97d9279411.tar.xz tangerine-wallet-browser-d8bee4f5992c5a1d0851e87c49e13c97d9279411.tar.zst tangerine-wallet-browser-d8bee4f5992c5a1d0851e87c49e13c97d9279411.zip |
Make default providers more easiliy configurable for metamask devs
No longer do our `mainnet` and `testnet` buttons set specific RPC urls. Now they set `provider.type`, which gets interpreted with code.
Currently the provider types of `mainnet` and `testnet` point to our new scalable backends, but these could be re-interpreted to use any other provider, be it etherscan, peer to peer, or otherwise.
Makes it easier for us to upgrade our infrastructure without incorporating migration logic into the program.
Diffstat (limited to 'ui')
-rw-r--r-- | ui/app/actions.js | 10 | ||||
-rw-r--r-- | ui/app/config.js | 29 | ||||
-rw-r--r-- | ui/app/reducers/metamask.js | 12 |
3 files changed, 45 insertions, 6 deletions
diff --git a/ui/app/actions.js b/ui/app/actions.js index 5c5805c29..dbcf3e577 100644 --- a/ui/app/actions.js +++ b/ui/app/actions.js @@ -77,10 +77,12 @@ var actions = { // config screen SHOW_CONFIG_PAGE: 'SHOW_CONFIG_PAGE', SET_RPC_TARGET: 'SET_RPC_TARGET', + SET_PROVIDER_TYPE: 'SET_PROVIDER_TYPE', USE_ETHERSCAN_PROVIDER: 'USE_ETHERSCAN_PROVIDER', useEtherscanProvider: useEtherscanProvider, showConfigPage: showConfigPage, setRpcTarget: setRpcTarget, + setProviderType: setProviderType, // hacky - need a way to get a reference to account manager _setAccountManager: _setAccountManager, // loading overlay @@ -369,6 +371,14 @@ function setRpcTarget(newRpc) { } } +function setProviderType(type) { + _accountManager.setProviderType(type) + return { + type: this.SET_PROVIDER_TYPE, + value: type, + } +} + function useEtherscanProvider() { _accountManager.useEtherscanProvider() return { diff --git a/ui/app/config.js b/ui/app/config.js index ded065bf8..ddf158325 100644 --- a/ui/app/config.js +++ b/ui/app/config.js @@ -84,7 +84,7 @@ ConfigScreen.prototype.render = function() { }, onClick(event) { event.preventDefault() - state.dispatch(actions.setRpcTarget('https://rpc.metamask.io/')) + state.dispatch(actions.setProviderType('mainnet')) } }, 'Use Main Network') ]), @@ -96,7 +96,7 @@ ConfigScreen.prototype.render = function() { }, onClick(event) { event.preventDefault() - state.dispatch(actions.setRpcTarget('https://testrpc.metamask.io/')) + state.dispatch(actions.setProviderType('testnet')) } }, 'Use Morden Test Network') ]), @@ -120,9 +120,28 @@ ConfigScreen.prototype.render = function() { } function currentProviderDisplay(metamaskState) { - var rpc = metamaskState.provider.rpcTarget + var provider = metamaskState.provider + var title, value + + switch (provider.type) { + + case 'mainnet': + title = 'Current Network' + value = 'Main Ethereum Network' + break + + case 'testnet': + title = 'Current Network' + value = 'Morden Test Network' + break + + default: + title = 'Current RPC' + value = metamaskState.provider.rpcTarget + } + return h('div', [ - h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, 'Current RPC'), - h('span', rpc) + h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, title), + h('span', value) ]) } diff --git a/ui/app/reducers/metamask.js b/ui/app/reducers/metamask.js index 2fe96c453..9398f1497 100644 --- a/ui/app/reducers/metamask.js +++ b/ui/app/reducers/metamask.js @@ -38,7 +38,17 @@ function reduceMetamask(state, action) { case actions.SET_RPC_TARGET: return extend(metamaskState, { - rpcTarget: action.value, + provider: { + type: 'rpc', + rpcTarget: action.value, + }, + }) + + case actions.SET_PROVIDER_TYPE: + return extend(metamaskState, { + provider: { + type: action.value, + }, }) case actions.COMPLETED_TX: |