Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions apps/remix-ide/src/app/compiler/compiler-artefacts.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ module.exports = class CompilerArtefacts extends Plugin {
return contractsData
}

getCompilerAbstract (file) {
return this.compilersArtefactsPerFile[file]
}

// compilerData is a CompilerAbstract object
addResolvedContract (address, compilerData) {
this.compilersArtefacts[address] = compilerData
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default class FetchAndCompile extends Plugin {
contractAddress = ethutil.toChecksumAddress(contractAddress)
const compilersartefacts = globalRegistry.get('compilersartefacts').api

const localCompilation = () => compilersartefacts.get('__last') ? compilersartefacts.get('__last') : null
const localCompilation = () => compilersartefacts.get(contractAddress) ? compilersartefacts.get(contractAddress) : compilersartefacts.get('__last') ? compilersartefacts.get('__last') : null

const resolved = compilersartefacts.get(contractAddress)
if (resolved) return resolved
Expand Down
2 changes: 1 addition & 1 deletion apps/remix-ide/src/app/panels/terminal.js
Original file line number Diff line number Diff line change
Expand Up @@ -478,8 +478,8 @@ class Terminal extends Plugin {
self._components.txLogger.event.register('debuggingRequested', async (hash) => {
// TODO should probably be in the run module
if (!await self._opts.appManager.isActive('debugger')) await self._opts.appManager.activatePlugin('debugger')
this.call('debugger', 'debug', hash)
this.call('menuicons', 'select', 'debugger')
this.call('debugger', 'debug', hash)
})

return self._view.el
Expand Down
30 changes: 18 additions & 12 deletions apps/remix-ide/src/app/tabs/runTab/contractDropdown.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import publishToStorage from '../../../publishToStorage'

var yo = require('yo-yo')
var css = require('../styles/run-tab-styles')
var modalDialogCustom = require('../../ui/modal-dialog-custom')
var remixLib = require('@remix-project/remix-lib')
var EventManager = remixLib.EventManager
var confirmDialog = require('../../ui/confirmDialog')
var modalDialog = require('../../ui/modaldialog')
var MultiParamManager = require('../../ui/multiParamManager')
const yo = require('yo-yo')
const css = require('../styles/run-tab-styles')
const modalDialogCustom = require('../../ui/modal-dialog-custom')
const remixLib = require('@remix-project/remix-lib')
const EventManager = remixLib.EventManager
const confirmDialog = require('../../ui/confirmDialog')
const modalDialog = require('../../ui/modaldialog')
const MultiParamManager = require('../../ui/multiParamManager')
const helper = require('../../../lib/helper')

class ContractDropdownUI {
constructor (blockchain, dropdownLogic, logCallback, runView) {
Expand Down Expand Up @@ -279,6 +280,8 @@ class ContractDropdownUI {
}
}

const self = this

var promptCb = (okCb, cancelCb) => {
modalDialogCustom.promptPassphrase('Passphrase requested', 'Personal mode is enabled. Please provide passphrase of account', '', okCb, cancelCb)
}
Expand All @@ -288,15 +291,18 @@ class ContractDropdownUI {
}

var finalCb = (error, contractObject, address) => {
this.event.trigger('clearInstance')
self.event.trigger('clearInstance')

if (error) {
return this.logCallback(error)
}

this.event.trigger('newContractInstanceAdded', [contractObject, address, contractObject.name])
if (this.ipfsCheckedState) {
publishToStorage('ipfs', this.runView.fileProvider, this.runView.fileManager, selectedContract)
self.event.trigger('newContractInstanceAdded', [contractObject, address, contractObject.name])

const data = self.runView.compilersArtefacts.getCompilerAbstract(contractObject.contract.file)
self.runView.compilersArtefacts.addResolvedContract(helper.addressToString(address), data)
if (self.ipfsCheckedState) {
publishToStorage('ipfs', self.runView.fileProvider, self.runView.fileManager, selectedContract)
}
}

Expand Down
20 changes: 3 additions & 17 deletions apps/remix-ide/src/app/tabs/runTab/model/recorder.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@ var remixLib = require('@remix-project/remix-lib')
var EventManager = remixLib.EventManager
var format = remixLib.execution.txFormat
var txHelper = remixLib.execution.txHelper
const helper = require('../../../../lib/helper')

/**
* Record transaction as long as the user create them.
*
*
*/
class Recorder {
constructor (blockchain) {
Expand Down Expand Up @@ -69,8 +68,7 @@ class Recorder {
if (call) return

if (!rawAddress) return // not a contract creation
const stringAddress = this.addressToString(rawAddress)
const address = ethutil.toChecksumAddress(stringAddress)
const address = helper.addressToString(rawAddress)
// save back created addresses for the convertion from tokens to real adresses
this.data._createdContracts[address] = timestamp
this.data._createdContractsReverse[timestamp] = address
Expand Down Expand Up @@ -252,8 +250,7 @@ class Recorder {
return logCallBack(err + '. Execution failed at ' + index)
}
if (rawAddress) {
const stringAddress = self.addressToString(rawAddress)
const address = ethutil.toChecksumAddress(stringAddress)
const address = helper.addressToString(rawAddress)
// save back created addresses for the convertion from tokens to real adresses
self.data._createdContracts[address] = tx.timestamp
self.data._createdContractsReverse[tx.timestamp] = address
Expand All @@ -265,17 +262,6 @@ class Recorder {
}, () => { self.setListen(true); self.clearAll() })
}

addressToString (address) {
if (!address) return null
if (typeof address !== 'string') {
address = address.toString('hex')
}
if (address.indexOf('0x') === -1) {
address = '0x' + address
}
return address
}

runScenario (json, continueCb, promptCb, alertCb, confirmationCb, logCallBack, cb) {
if (!json) {
return cb('a json content must be provided')
Expand Down
9 changes: 8 additions & 1 deletion apps/remix-ide/src/app/ui/txLogger.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,14 @@ function renderKnownTransaction (self, data, blockchain) {
${checkTxStatus(data.receipt, txType)}
${context(self, { from, to, data }, blockchain)}
<div class=${css.buttons}>
<button class="${css.debug} btn btn-primary btn-sm" data-shared="txLoggerDebugButton" data-id="txLoggerDebugButton${data.tx.hash}" onclick=${(e) => debug(e, data, self)}>Debug</div>
<button
class="${css.debug} btn btn-primary btn-sm"
data-shared="txLoggerDebugButton"
data-id="txLoggerDebugButton${data.tx.hash}"
onclick=${(e) => debug(e, data, self)}
>
Debug
</div>
</div>
<i class="${css.arrow} fas fa-angle-down"></i>
</div>
Expand Down
11 changes: 11 additions & 0 deletions apps/remix-ide/src/lib/helper.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
var async = require('async')
const ethJSUtil = require('ethereumjs-util')

module.exports = {
shortenAddress: function (address, etherBalance) {
var len = address.length
return address.slice(0, 5) + '...' + address.slice(len - 5, len) + (etherBalance ? ' (' + etherBalance.toString() + ' ether)' : '')
},
addressToString: function (address) {
if (!address) return null
if (typeof address !== 'string') {
address = address.toString('hex')
}
if (address.indexOf('0x') === -1) {
address = '0x' + address
}
return ethJSUtil.toChecksumAddress(address)
},
shortenHexData: function (data) {
if (!data) return ''
if (data.length < 5) return data
Expand Down