aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/inpage.js
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2016-04-16 04:04:17 +0800
committerkumavis <aaron@kumavis.me>2016-04-16 04:04:17 +0800
commitd6114292d0c05b42b1d28d75baad8af0c06509a1 (patch)
treea93d1f15590ddfce886392bca175803184bb66c4 /app/scripts/inpage.js
parentd840e81a101351bd661668cf0b1f9e5b73683890 (diff)
downloadtangerine-wallet-browser-d6114292d0c05b42b1d28d75baad8af0c06509a1.tar
tangerine-wallet-browser-d6114292d0c05b42b1d28d75baad8af0c06509a1.tar.gz
tangerine-wallet-browser-d6114292d0c05b42b1d28d75baad8af0c06509a1.tar.bz2
tangerine-wallet-browser-d6114292d0c05b42b1d28d75baad8af0c06509a1.tar.lz
tangerine-wallet-browser-d6114292d0c05b42b1d28d75baad8af0c06509a1.tar.xz
tangerine-wallet-browser-d6114292d0c05b42b1d28d75baad8af0c06509a1.tar.zst
tangerine-wallet-browser-d6114292d0c05b42b1d28d75baad8af0c06509a1.zip
inpage - use publicConfigStore for selectedAccount and sync provider
Diffstat (limited to 'app/scripts/inpage.js')
-rw-r--r--app/scripts/inpage.js54
1 files changed, 26 insertions, 28 deletions
diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js
index b59cf1b0c..e6684cbd4 100644
--- a/app/scripts/inpage.js
+++ b/app/scripts/inpage.js
@@ -9,7 +9,7 @@ const Web3 = require('web3')
delete window.Web3
window.MetamaskWeb3 = Web3
-const RPC_URL = 'https://testrpc.metamask.io/'
+const DEFAULT_RPC_URL = 'https://rpc.metamask.io/'
//
@@ -27,12 +27,13 @@ var remoteProvider = new StreamProvider()
remoteProvider.pipe(mx.createStream('provider')).pipe(remoteProvider)
remoteProvider.on('error', console.error.bind(console))
-var publicConfigStore = new RemoteStore()
+var initState = JSON.parse(localStorage['MetaMask-Config'] || '{}')
+var publicConfigStore = new RemoteStore(initState)
var storeStream = publicConfigStore.createStream()
storeStream.pipe(mx.createStream('publicConfig')).pipe(storeStream)
publicConfigStore.subscribe(function(state){
- console.log('store updated:', state)
+ localStorage['MetaMask-Config'] = JSON.stringify(state)
})
@@ -52,42 +53,39 @@ console.log('MetaMask - injected web3')
// handle synchronous requests
//
-// handle accounts cache
-var accountsCache = JSON.parse(localStorage['MetaMask-Accounts'] || '[]')
-web3.eth.defaultAccount = accountsCache[0]
-
-setInterval(populateAccountsCache, 4000)
-function populateAccountsCache(){
- remoteProvider.sendAsync(createPayload({
- method: 'eth_accounts',
- params: [],
- isMetamaskInternal: true,
- }), function(err, response){
- if (err) return console.error('MetaMask - Error polling accounts')
- // update localStorage
- var accounts = response.result
- if (accounts.toString() !== accountsCache.toString()) {
- accountsCache = accounts
- web3.eth.defaultAccount = accountsCache[0]
- localStorage['MetaMask-Accounts'] = JSON.stringify(accounts)
- }
- })
-}
+global.publicConfigStore = publicConfigStore
+
+// set web3 defaultAcount
+publicConfigStore.subscribe(function(state){
+ web3.eth.defaultAccount = state.selectedAddress
+})
+
+// setup sync http provider
+var providerConfig = publicConfigStore.get('provider') || {}
+var providerUrl = providerConfig.rpcTarget ? providerConfig.rpcTarget : DEFAULT_RPC_URL
+var syncProvider = new Web3.providers.HttpProvider(providerUrl)
+publicConfigStore.subscribe(function(state){
+ if (!state.provider) return
+ if (!state.provider.rpcTarget || state.provider.rpcTarget === providerUrl) return
+ providerUrl = state.provider.rpcTarget
+ syncProvider = new Web3.providers.HttpProvider(providerUrl)
+})
-// handle synchronous methods via standard http provider
-var syncProvider = new Web3.providers.HttpProvider(RPC_URL)
+// handle sync methods
remoteProvider.send = function(payload){
var result = null
switch (payload.method) {
case 'eth_accounts':
// read from localStorage
- result = accountsCache
+ var selectedAddress = publicConfigStore.get('selectedAddress')
+ result = selectedAddress ? [selectedAddress] : []
break
case 'eth_coinbase':
// read from localStorage
- result = accountsCache[0] || '0x0000000000000000000000000000000000000000'
+ var selectedAddress = publicConfigStore.get('selectedAddress')
+ result = selectedAddress || '0x0000000000000000000000000000000000000000'
break
// fallback to normal rpc