diff --git a/src/app.js b/src/app.js index b1d68d3e55..9c7e1437f1 100644 --- a/src/app.js +++ b/src/app.js @@ -100,44 +100,6 @@ var run = function() { } }); - // ----------------- execution context ------------- - - var $vmToggle = $('#vm'); - var $web3Toggle = $('#web3'); - var $web3endpoint = $('#web3Endpoint'); - - if (web3.providers && web3.currentProvider instanceof web3.providers.IpcProvider) - $web3endpoint.val('ipc'); - - var executionContext = 'vm'; - $vmToggle.get(0).checked = true; - - $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?") ) { - $vmToggle.get(0).checked = true; - executionContext = 'vm'; - } else { - executionContext = ev.target.value; - setProviderFromEndpoint(); - } - 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)); - } - // ------------------ gist publish -------------- @@ -453,7 +415,7 @@ var run = function() { return $.getJSON('https://api.github.com/repos/' + root + '/contents/' + path, cb); } - var compiler = new Compiler(editor, handleGithubCall, $('#output'), getHidingRHP, updateFiles); + var compiler = new Compiler(web3, editor, handleGithubCall, $('#output'), getHidingRHP, updateFiles); function setVersionText(text) { $('#version').text(text); diff --git a/src/app/compiler.js b/src/app/compiler.js index 78075d7420..7782d0b653 100644 --- a/src/app/compiler.js +++ b/src/app/compiler.js @@ -4,8 +4,8 @@ var Renderer = require('./renderer'); var Base64 = require('js-base64').Base64; -function Compiler(editor, handleGithubCall, outputField, hidingRHP, updateFiles) { - var renderer = new Renderer(editor, this, updateFiles); +function Compiler(web3, editor, handleGithubCall, outputField, hidingRHP, updateFiles) { + var renderer = new Renderer(web3, editor, this, updateFiles); var compileJSON; var compilerAcceptsMultipleFiles; diff --git a/src/app/renderer.js b/src/app/renderer.js index 9b2585507a..6c27e89242 100644 --- a/src/app/renderer.js +++ b/src/app/renderer.js @@ -4,9 +4,48 @@ var UniversalDApp = require('../universal-dapp.js'); var utils = require('./utils'); -function Renderer(editor, compiler, updateFiles) { +function Renderer(web3, editor, compiler, updateFiles) { var detailsOpen = {}; + var executionContext = 'vm'; + + // Forcing all of this setup into its own scope. + (function(){ + function executionContextChange (ev) { + if (ev.target.value == 'web3' && !confirm("Are you sure you want to connect to a local ethereum node?") ) { + $vmToggle.get(0).checked = true; + executionContext = 'vm'; + } else { + executionContext = ev.target.value; + setProviderFromEndpoint(); + } + 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)); + } + + var $vmToggle = $('#vm'); + var $web3Toggle = $('#web3'); + var $web3endpoint = $('#web3Endpoint'); + + if (web3.providers && web3.currentProvider instanceof web3.providers.IpcProvider) + $web3endpoint.val('ipc'); + + $vmToggle.get(0).checked = true; + + $vmToggle.on('change', executionContextChange ); + $web3Toggle.on('change', executionContextChange ); + $web3endpoint.on('change', function() { + setProviderFromEndpoint(); + if (executionContext == 'web3') compiler.compile(); + }); + })(); function renderError(message) { var type = utils.errortype(message);