From d8bee4f5992c5a1d0851e87c49e13c97d9279411 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Tue, 10 May 2016 15:37:13 -0700 Subject: 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. --- app/scripts/lib/config-manager.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'app/scripts/lib') 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) -- cgit v1.2.3