Merge pull request #62 from redsquirrel/injected-web3-support
Supporting an injected web3pull/1/head
commit
fa8e792531
@ -0,0 +1,81 @@ |
|||||||
|
var $ = require('jquery'); |
||||||
|
var Web3 = require('web3'); |
||||||
|
|
||||||
|
var injectedProvider; |
||||||
|
|
||||||
|
if (typeof web3 !== 'undefined') { |
||||||
|
injectedProvider = web3.currentProvider; |
||||||
|
web3 = new Web3(injectedProvider); |
||||||
|
} else { |
||||||
|
web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); |
||||||
|
} |
||||||
|
|
||||||
|
function ExecutionContext (compiler) { |
||||||
|
var executionContext = injectedProvider ? 'injected' : 'vm'; |
||||||
|
|
||||||
|
this.isVM = function () { |
||||||
|
return executionContext === 'vm'; |
||||||
|
}; |
||||||
|
|
||||||
|
this.web3 = function () { |
||||||
|
return web3; |
||||||
|
}; |
||||||
|
|
||||||
|
var $injectedToggle = $('#injected-mode'); |
||||||
|
var $vmToggle = $('#vm-mode'); |
||||||
|
var $web3Toggle = $('#web3-mode'); |
||||||
|
var $web3endpoint = $('#web3Endpoint'); |
||||||
|
|
||||||
|
if (web3.providers && web3.currentProvider instanceof web3.providers.IpcProvider) { |
||||||
|
$web3endpoint.val('ipc'); |
||||||
|
} |
||||||
|
|
||||||
|
setExecutionContextRadio(); |
||||||
|
|
||||||
|
$injectedToggle.on('change', executionContextChange); |
||||||
|
$vmToggle.on('change', executionContextChange); |
||||||
|
$web3Toggle.on('change', executionContextChange); |
||||||
|
$web3endpoint.on('change', function () { |
||||||
|
setProviderFromEndpoint(); |
||||||
|
if (executionContext === 'web3') { |
||||||
|
compiler.compile(); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
function executionContextChange (ev) { |
||||||
|
if (ev.target.value === 'web3' && !confirm('Are you sure you want to connect to a local ethereum node?')) { |
||||||
|
setExecutionContextRadio(); |
||||||
|
} else if (ev.target.value === 'injected' && injectedProvider === undefined) { |
||||||
|
setExecutionContextRadio(); |
||||||
|
} else { |
||||||
|
executionContext = ev.target.value; |
||||||
|
if (executionContext === 'web3') { |
||||||
|
setProviderFromEndpoint(); |
||||||
|
} else if (executionContext === 'injected') { |
||||||
|
web3.setProvider(injectedProvider); |
||||||
|
} |
||||||
|
} |
||||||
|
compiler.compile(); |
||||||
|
} |
||||||
|
|
||||||
|
function setProviderFromEndpoint () { |
||||||
|
var endpoint = $web3endpoint.val(); |
||||||
|
if (endpoint === 'ipc') { |
||||||
|
web3.setProvider(new web3.providers.IpcProvider()); |
||||||
|
} else { |
||||||
|
web3.setProvider(new web3.providers.HttpProvider(endpoint)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function setExecutionContextRadio () { |
||||||
|
if (executionContext === 'injected') { |
||||||
|
$injectedToggle.get(0).checked = true; |
||||||
|
} else if (executionContext === 'vm') { |
||||||
|
$vmToggle.get(0).checked = true; |
||||||
|
} else if (executionContext === 'web3') { |
||||||
|
$web3Toggle.get(0).checked = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
module.exports = ExecutionContext; |
@ -1,12 +0,0 @@ |
|||||||
// This mainly extracts the provider that might be
|
|
||||||
// supplied through mist.
|
|
||||||
|
|
||||||
var Web3 = require('web3'); |
|
||||||
|
|
||||||
if (typeof web3 !== 'undefined') { |
|
||||||
web3 = new Web3(web3.currentProvider); |
|
||||||
} else { |
|
||||||
web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); |
|
||||||
} |
|
||||||
|
|
||||||
module.exports = web3; |
|
Loading…
Reference in new issue