diff options
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/scripts/lib/config-manager.js')
-rw-r--r-- | app/scripts/lib/config-manager.js | 34 |
1 files changed, 27 insertions, 7 deletions
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) |