aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2016-05-11 06:37:13 +0800
committerDan Finlay <dan@danfinlay.com>2016-05-11 06:37:13 +0800
commitd8bee4f5992c5a1d0851e87c49e13c97d9279411 (patch)
tree56f225263d4e8ff3e0b106afc7e28770075e92e9 /ui
parentab273ba4443f83d81d3530bc18d14b1795f54d0b (diff)
downloadtangerine-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.js10
-rw-r--r--ui/app/config.js29
-rw-r--r--ui/app/reducers/metamask.js12
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: