mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
First naive pass at implementing etherscan provider (not working)
Committing and pushing to get feedback.
This commit is contained in:
parent
f451da67a7
commit
d9cadb9efb
@ -1,5 +1,6 @@
|
||||
{
|
||||
"name": "__MSG_appName__",
|
||||
"short_name": "Metamask",
|
||||
"version": "1.2.1",
|
||||
"manifest_version": 2,
|
||||
"description": "__MSG_appDescription__",
|
||||
|
@ -7,6 +7,7 @@ const extend = require('xtend')
|
||||
const EthStore = require('eth-store')
|
||||
const PortStream = require('./lib/port-stream.js')
|
||||
const MetaMaskProvider = require('web3-provider-engine/zero.js')
|
||||
const EtherscanProvider = require('web3-provider-engine/subproviders/etherscan')
|
||||
const IdentityStore = require('./lib/idStore')
|
||||
const createTxNotification = require('./lib/tx-notification.js')
|
||||
const configManager = require('./lib/config-manager-singleton')
|
||||
@ -36,8 +37,9 @@ function handleEthRpcRequestStream(stream){
|
||||
// state and network
|
||||
//
|
||||
|
||||
var providerConfig = configManager.getProvider()
|
||||
var idStore = new IdentityStore()
|
||||
var zeroClient = MetaMaskProvider({
|
||||
var providerOpts = {
|
||||
rpcUrl: configManager.getCurrentRpcAddress(),
|
||||
getAccounts: function(cb){
|
||||
var selectedAddress = idStore.getSelectedAddress()
|
||||
@ -46,14 +48,23 @@ var zeroClient = MetaMaskProvider({
|
||||
},
|
||||
approveTransaction: addUnconfirmedTx,
|
||||
signTransaction: idStore.signTransaction.bind(idStore),
|
||||
})
|
||||
}
|
||||
var provider
|
||||
switch (providerConfig.type) {
|
||||
case 'rpc':
|
||||
provider = MetaMaskProvider(providerOpts)
|
||||
break
|
||||
case 'etherscan':
|
||||
provider = EtherscanProvider(providerOpts)
|
||||
break
|
||||
}
|
||||
|
||||
// log new blocks
|
||||
zeroClient.on('block', function(block){
|
||||
provider.on('block', function(block){
|
||||
console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))
|
||||
})
|
||||
|
||||
var ethStore = new EthStore(zeroClient)
|
||||
var ethStore = new EthStore(provider)
|
||||
idStore.setStore(ethStore)
|
||||
|
||||
function getState(){
|
||||
@ -68,7 +79,7 @@ function getState(){
|
||||
// handle rpc requests
|
||||
function onRpcRequest(remoteStream, payload){
|
||||
// console.log('MetaMaskPlugin - incoming payload:', payload)
|
||||
zeroClient.sendAsync(payload, function onPayloadHandled(err, response){
|
||||
provider.sendAsync(payload, function onPayloadHandled(err, response){
|
||||
// provider engine errors are included in response objects
|
||||
if (!payload.isMetamaskInternal) console.log('MetaMaskPlugin - RPC complete:', payload, '->', response)
|
||||
try {
|
||||
@ -111,6 +122,7 @@ function linkDnode(stream){
|
||||
var connection = Dnode({
|
||||
getState: function(cb){ cb(null, getState()) },
|
||||
setRpcTarget: setRpcTarget,
|
||||
useEtherscanProvider: useEtherscanProvider,
|
||||
// forward directly to idStore
|
||||
createNewVault: idStore.createNewVault.bind(idStore),
|
||||
recoverFromSeed: idStore.recoverFromSeed.bind(idStore),
|
||||
@ -179,6 +191,11 @@ function setRpcTarget(rpcTarget){
|
||||
chrome.runtime.reload()
|
||||
}
|
||||
|
||||
function useEtherscanProvider() {
|
||||
configManager.useEtherscanProvider()
|
||||
chrome.runtime.reload()
|
||||
}
|
||||
|
||||
// util
|
||||
|
||||
function jsonParseStream(){
|
||||
|
@ -47,15 +47,6 @@ ConfigManager.prototype.setConfig = function(config) {
|
||||
this.setData(data)
|
||||
}
|
||||
|
||||
ConfigManager.prototype.setRpcTarget = function(rpcUrl) {
|
||||
var config = this.getConfig()
|
||||
config.provider = {
|
||||
type: 'rpc',
|
||||
rpcTarget: rpcUrl,
|
||||
}
|
||||
this.setConfig(config)
|
||||
}
|
||||
|
||||
ConfigManager.prototype.getConfig = function() {
|
||||
var data = this.migrator.getData()
|
||||
if ('config' in data) {
|
||||
@ -70,6 +61,28 @@ ConfigManager.prototype.getConfig = function() {
|
||||
}
|
||||
}
|
||||
|
||||
ConfigManager.prototype.setRpcTarget = function(rpcUrl) {
|
||||
var config = this.getConfig()
|
||||
config.provider = {
|
||||
type: 'rpc',
|
||||
rpcTarget: rpcUrl,
|
||||
}
|
||||
this.setConfig(config)
|
||||
}
|
||||
|
||||
ConfigManager.prototype.useEtherscanProvider = function() {
|
||||
var config = this.getConfig()
|
||||
config.provider = {
|
||||
type: 'etherscan',
|
||||
}
|
||||
this.setConfig(config)
|
||||
}
|
||||
|
||||
ConfigManager.prototype.getProvider = function() {
|
||||
var config = this.getConfig()
|
||||
return config.provider
|
||||
}
|
||||
|
||||
ConfigManager.prototype.setData = function(data) {
|
||||
this.migrator.saveData(data)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user