diff --git a/src/app/tabs/runTab/contractDropdown.js b/src/app/tabs/runTab/contractDropdown.js index 8215c36a82..7c35e771f5 100644 --- a/src/app/tabs/runTab/contractDropdown.js +++ b/src/app/tabs/runTab/contractDropdown.js @@ -107,7 +107,7 @@ class ContractDropdownUI { } const selectedContract = this.getSelectedContract() - const clickCallback = (valArray, inputsValues) => { + const clickCallback = async (valArray, inputsValues) => { var selectedContract = this.getSelectedContract() this.createInstance(selectedContract, inputsValues) } @@ -130,7 +130,7 @@ class ContractDropdownUI { return this.dropdownLogic.getSelectedContract(contractName, compilerAtributeName) } - createInstance (selectedContract, args) { + async createInstance (selectedContract, args) { if (selectedContract.bytecodeObject.length === 0) { return modalDialogCustom.alert('This contract may be abstract, not implement an abstract parent\'s methods completely or not invoke an inherited contract\'s constructor correctly.') } diff --git a/src/app/tabs/runTab/model/dropdownlogic.js b/src/app/tabs/runTab/model/dropdownlogic.js index c2dd5b8318..ca81e4ac2f 100644 --- a/src/app/tabs/runTab/model/dropdownlogic.js +++ b/src/app/tabs/runTab/model/dropdownlogic.js @@ -149,22 +149,27 @@ class DropdownLogic { ) } - determineGasFees(gasPrice, cb) { - let txFeeText, priceStatus - // TODO: this try catch feels like an anti pattern, can/should be - // removed, but for now keeping the original logic - try { - var fee = this.calculateFee(tx.gas, gasPrice) - txFeeText = ' ' + this.fromWei(fee, false, 'ether') + ' Ether' - priceStatus = true - } catch (e) { - txFeeText = ' Please fix this issue before sending any transaction. ' + e.message - priceStatus = false + // determineGasFees (gasPrice, cb) { + determineGasFees (tx) { + const determineGasFeesCb = (gasPrice, cb) => { + let txFeeText, priceStatus + // TODO: this try catch feels like an anti pattern, can/should be + // removed, but for now keeping the original logic + try { + var fee = this.calculateFee(tx.gas, gasPrice) + txFeeText = ' ' + this.fromWei(fee, false, 'ether') + ' Ether' + priceStatus = true + } catch (e) { + txFeeText = ' Please fix this issue before sending any transaction. ' + e.message + priceStatus = false + } + cb(txFeeText, priceStatus) } - cb(txFeeText, priceStatus) + + return determineGasFeesCb } - determineGasPrice(cb) { + determineGasPrice (cb) { this.getGasPrice((error, gasPrice) => { var warnMessage = ' Please fix this issue before sending any transaction. ' if (error) { @@ -179,13 +184,13 @@ class DropdownLogic { }) } - getConfirmationCb(modalDialog, confirmDialog) { + getConfirmationCb (modalDialog, confirmDialog) { const confirmationCb = (network, tx, gasEstimation, continueTxExecution, cancelCb) => { if (network.name !== 'Main') { return continueTxExecution(null) } const amount = this.fromWei(tx.value, true, 'ether') - const content = confirmDialog(tx, amount, gasEstimation, null, this.determineGasFees, this.determineGasPrice) + const content = confirmDialog(tx, amount, gasEstimation, null, this.determineGasFees(tx), this.determineGasPrice) modalDialog('Confirm transaction', content, { label: 'Confirm', @@ -215,12 +220,12 @@ class DropdownLogic { this.udapp.runTx(data, confirmationCb, continueCb, promptCb, finalCb) } - getCompilerContracts() { + getCompilerContracts () { return this.compilersArtefacts['__last'].getData().contracts } - async deploContract (selectedContract, args, contractMetadata, compilerContracts, callbacks, dialogs) { - const {continueCb, promptCb, statusCb, finalCb} = callbacks + async deployContract (selectedContract, args, contractMetadata, compilerContracts, callbacks, dialogs) { + const {continueCb, promptCb, statusCb, finalCb} = callbacks const {modalDialog, confirmDialog} = dialogs var constructor = selectedContract.getConstructorInterface() diff --git a/src/app/udapp/run-tab.js b/src/app/udapp/run-tab.js index 4566982ac6..97b20b8233 100644 --- a/src/app/udapp/run-tab.js +++ b/src/app/udapp/run-tab.js @@ -134,7 +134,7 @@ export class RunTab extends LibraryPlugin { const dropdownLogic = new DropdownLogic(this.executionContext, compilersArtefacts, config, editor, udapp, this) this.contractDropdownUI = new ContractDropdownUI(dropdownLogic, logCallback, this) - fileManager.events.on('currentFileChanged', contractDropdownUI.changeCurrentFile.bind(contractDropdownUI)) + fileManager.events.on('currentFileChanged', this.contractDropdownUI.changeCurrentFile.bind(this.contractDropdownUI)) this.contractDropdownUI.event.register('clearInstance', () => { const noInstancesText = this.noInstancesText