aboutsummaryrefslogtreecommitdiffstats
path: root/app
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 /app
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 'app')
-rw-r--r--app/scripts/background.js7
-rw-r--r--app/scripts/lib/config-manager.js34
2 files changed, 34 insertions, 7 deletions
diff --git a/app/scripts/background.js b/app/scripts/background.js
index 0f9ecc1c9..a52eab2d3 100644
--- a/app/scripts/background.js
+++ b/app/scripts/background.js
@@ -168,6 +168,7 @@ function setupControllerConnection(stream){
var dnode = Dnode({
getState: function(cb){ cb(null, getState()) },
setRpcTarget: setRpcTarget,
+ setProviderType: setProviderType,
useEtherscanProvider: useEtherscanProvider,
// forward directly to idStore
createNewVault: idStore.createNewVault.bind(idStore),
@@ -255,6 +256,12 @@ function setRpcTarget(rpcTarget){
idStore.getNetwork(3) // 3 retry attempts
}
+function setProviderType(type) {
+ configManager.setProviderType(type)
+ chrome.runtime.reload()
+ idStore.getNetwork(3)
+}
+
function useEtherscanProvider() {
configManager.useEtherscanProvider()
chrome.runtime.reload()
diff --git a/app/scripts/lib/config-manager.js b/app/scripts/lib/config-manager.js
index 5bfb8befe..fd48432b5 100644
--- a/app/scripts/lib/config-manager.js
+++ b/app/scripts/lib/config-manager.js
@@ -2,7 +2,8 @@ const Migrator = require('pojo-migrator')
const extend = require('xtend')
const STORAGE_KEY = 'metamask-config'
-const DEFAULT_RPC = 'https://testrpc.metamask.io/'
+const TESTNET_RPC = 'http://morden.infura.io'
+const MAINNET_RPC = 'http://mainnet.infura.io/'
const migrations = require('./migrations')
@@ -59,8 +60,7 @@ ConfigManager.prototype.getConfig = function() {
} else {
return {
provider: {
- type: 'rpc',
- rpcTarget: DEFAULT_RPC,
+ type: 'testnet',
}
}
}
@@ -75,6 +75,14 @@ ConfigManager.prototype.setRpcTarget = function(rpcUrl) {
this.setConfig(config)
}
+ConfigManager.prototype.setProviderType = function(type) {
+ var config = this.getConfig()
+ config.provider = {
+ type: type,
+ }
+ this.setConfig(config)
+}
+
ConfigManager.prototype.useEtherscanProvider = function() {
var config = this.getConfig()
config.provider = {
@@ -130,9 +138,19 @@ ConfigManager.prototype.getShouldShowSeedWords = function() {
}
ConfigManager.prototype.getCurrentRpcAddress = function() {
- var config = this.getConfig()
- if (!config) return null
- return config.provider && config.provider.rpcTarget ? config.provider.rpcTarget : DEFAULT_RPC
+ var provider = this.getProvider()
+ if (!provider) return null
+ switch (provider.type) {
+
+ case 'mainnet':
+ return MAINNET_RPC
+
+ case 'testnet':
+ return TESTNET_RPC
+
+ default:
+ return provider && provider.rpcTarget ? provider.rpcTarget : TESTNET_RPC
+ }
}
ConfigManager.prototype.clearWallet = function() {
@@ -246,7 +264,9 @@ function loadData() {
},
data: {
config: {
- rpcTarget: DEFAULT_RPC,
+ provider: {
+ type: 'testnet',
+ }
}
}
}, oldData ? oldData : null, newData ? newData : null)