Merge pull request #1030 from ethereum/refactor/remove_execution_ui_dependency

remove UI dependency from execution context
pull/1/head
yann300 7 years ago committed by GitHub
commit 5b164fc004
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      src/app.js
  2. 21
      src/app/tabs/run-tab.js
  3. 34
      src/execution-context.js

@ -784,7 +784,22 @@ function run () {
runCompiler() runCompiler()
if (queryParams.get().context) { if (queryParams.get().context) {
executionContext.setContext(queryParams.get().context, queryParams.get().endpointurl) let context = queryParams.get().context
let endPointUrl = queryParams.get().endPointUrl
executionContext.setContext(context, endPointUrl,
() => {
modalDialogCustom.confirm(null, 'Are you sure you want to connect to an ethereum node?', () => {
if (!endPointUrl) {
endPointUrl = 'http://localhost:8545'
}
modalDialogCustom.prompt(null, 'Web3 Provider Endpoint', endPointUrl, (target) => {
executionContext.setProviderFromEndpoint(target, context)
}, () => {})
}, () => {})
},
(alertMsg) => {
modalDialogCustom.alert(alertMsg)
})
} }
if (queryParams.get().debugtx) { if (queryParams.get().debugtx) {

@ -238,13 +238,30 @@ function runTab (container, appAPI, appEvents, opts) {
// DROPDOWN // DROPDOWN
var selectExEnv = el.querySelector('#selectExEnvOptions') var selectExEnv = el.querySelector('#selectExEnvOptions')
selectExEnv.addEventListener('change', function (event) {
executionContext.executionContextChange(selectExEnv.options[selectExEnv.selectedIndex].value, null, () => { function setFinalContext () {
// set the final context. Cause it is possible that this is not the one we've originaly selected // set the final context. Cause it is possible that this is not the one we've originaly selected
selectExEnv.value = executionContext.getProvider() selectExEnv.value = executionContext.getProvider()
fillAccountsList(appAPI, el) fillAccountsList(appAPI, el)
events.trigger('clearInstance', []) events.trigger('clearInstance', [])
}
selectExEnv.addEventListener('change', function (event) {
let context = selectExEnv.options[selectExEnv.selectedIndex].value
executionContext.executionContextChange(context, null, () => {
modalDialogCustom.confirm(null, 'Are you sure you want to connect to an ethereum node?', () => {
modalDialogCustom.prompt(null, 'Web3 Provider Endpoint', 'http://localhost:8545', (target) => {
executionContext.setProviderFromEndpoint(target, context, (alertMsg) => {
if (alertMsg) {
modalDialogCustom.alert(alertMsg)
}
setFinalContext()
}) })
}, setFinalContext)
}, setFinalContext)
}, (alertMsg) => {
modalDialogCustom.alert(alertMsg)
}, setFinalContext)
}) })
selectExEnv.value = executionContext.getProvider() selectExEnv.value = executionContext.getProvider()
fillAccountsList(appAPI, el) fillAccountsList(appAPI, el)

@ -8,7 +8,6 @@ var ethUtil = require('ethereumjs-util')
var StateManager = require('ethereumjs-vm/lib/stateManager') var StateManager = require('ethereumjs-vm/lib/stateManager')
var Web3VMProvider = remixLib.vm.Web3VMProvider var Web3VMProvider = remixLib.vm.Web3VMProvider
var rlp = ethUtil.rlp var rlp = ethUtil.rlp
var modalDialogCustom = require('./app/ui/modal-dialog-custom')
var injectedProvider var injectedProvider
@ -145,23 +144,13 @@ function ExecutionContext () {
return vm return vm
} }
this.setContext = function (context, endPointUrl) { this.setContext = function (context, endPointUrl, confirmCb, infoCb) {
executionContext = context executionContext = context
this.executionContextChange(context, endPointUrl) this.executionContextChange(context, endPointUrl, confirmCb, infoCb)
} }
this.executionContextChange = function (context, endPointUrl, cb) { this.executionContextChange = function (context, endPointUrl, confirmCb, infoCb, cb) {
if (!cb) cb = () => {} if (!cb) cb = () => {}
function runPrompt () {
if (!endPointUrl) {
endPointUrl = 'http://localhost:8545'
}
modalDialogCustom.prompt(null, 'Web3 Provider Endpoint', endPointUrl, (target) => {
setProviderFromEndpoint(target, context, cb)
}, () => {
cb()
})
}
if (context === 'vm') { if (context === 'vm') {
executionContext = context executionContext = context
@ -169,7 +158,7 @@ function ExecutionContext () {
vm.stateManager.checkpoint() vm.stateManager.checkpoint()
}) })
self.event.trigger('contextChanged', ['vm']) self.event.trigger('contextChanged', ['vm'])
cb() return cb()
} }
if (context === 'injected') { if (context === 'injected') {
@ -177,20 +166,18 @@ function ExecutionContext () {
var alertMsg = 'No injected Web3 provider found. ' var alertMsg = 'No injected Web3 provider found. '
alertMsg += 'Make sure your provider (e.g. MetaMask) is active and running ' alertMsg += 'Make sure your provider (e.g. MetaMask) is active and running '
alertMsg += '(when recently activated you may have to reload the page).' alertMsg += '(when recently activated you may have to reload the page).'
modalDialogCustom.alert(alertMsg) infoCb(alertMsg)
cb() return cb()
} else { } else {
executionContext = context executionContext = context
web3.setProvider(injectedProvider) web3.setProvider(injectedProvider)
self.event.trigger('contextChanged', ['injected']) self.event.trigger('contextChanged', ['injected'])
cb() return cb()
} }
} }
if (context === 'web3') { if (context === 'web3') {
modalDialogCustom.confirm(null, 'Are you sure you want to connect to an ethereum node?', confirmCb(cb)
() => { runPrompt(endPointUrl) }, () => { cb() }
)
} }
} }
@ -213,6 +200,7 @@ function ExecutionContext () {
} }
}, 15000) }, 15000)
// TODO: not used here anymore and needs to be moved
function setProviderFromEndpoint (endpoint, context, cb) { function setProviderFromEndpoint (endpoint, context, cb) {
var oldProvider = web3.currentProvider var oldProvider = web3.currentProvider
@ -230,10 +218,10 @@ function ExecutionContext () {
web3.setProvider(oldProvider) web3.setProvider(oldProvider)
var alertMsg = 'Not possible to connect to the Web3 provider. ' var alertMsg = 'Not possible to connect to the Web3 provider. '
alertMsg += 'Make sure the provider is running and a connection is open (via IPC or RPC).' alertMsg += 'Make sure the provider is running and a connection is open (via IPC or RPC).'
modalDialogCustom.alert(alertMsg) cb(alertMsg)
cb()
} }
} }
this.setProviderFromEndpoint = setProviderFromEndpoint
} }
module.exports = new ExecutionContext() module.exports = new ExecutionContext()

Loading…
Cancel
Save