Commit 5b72f3bb authored by Iuri Matias's avatar Iuri Matias Committed by yann300

refactor to use events

parent ec84a467
...@@ -10,9 +10,8 @@ var StepDetail = require('./vmDebugger/StepDetail') ...@@ -10,9 +10,8 @@ var StepDetail = require('./vmDebugger/StepDetail')
var DebuggerSolidityState = require('../solidityState') var DebuggerSolidityState = require('../solidityState')
var SolidityState = require('./vmDebugger/SolidityState') var SolidityState = require('./vmDebugger/SolidityState')
// var SolidityLocals = require('../remix-debugger/src/ui/SolidityLocals')
var SolidityLocals = require('./vmDebugger/SolidityLocals') var SolidityLocals = require('./vmDebugger/SolidityLocals')
var FullStoragesChangesPanel = require('../remix-debugger/src/ui/FullStoragesChanges') var FullStoragesChangesPanel = require('../remix-debugger/src/ui/FullStoragesChanges')
var DropdownPanel = require('./vmDebugger/DropdownPanel') var DropdownPanel = require('./vmDebugger/DropdownPanel')
var remixDebug = require('remix-debug') var remixDebug = require('remix-debug')
......
'use strict' 'use strict'
var remixLib = require('remix-lib')
var EventManager = remixLib.EventManager
var DropdownPanel = require('./DropdownPanel') var DropdownPanel = require('./DropdownPanel')
var remixDebug = require('remix-debug') var remixDebug = require('remix-debug')
var localDecoder = remixDebug.SolidityDecoder.localDecoder var localDecoder = remixDebug.SolidityDecoder.localDecoder
...@@ -6,9 +8,19 @@ var solidityTypeFormatter = require('./utils/SolidityTypeFormatter') ...@@ -6,9 +8,19 @@ var solidityTypeFormatter = require('./utils/SolidityTypeFormatter')
var StorageViewer = remixDebug.storage.StorageViewer var StorageViewer = remixDebug.storage.StorageViewer
var yo = require('yo-yo') var yo = require('yo-yo')
// class DebuggerSolidityLocals {
//
// constructor (_parent, _traceManager, _internalTreeCall) {
//
// }
//
// }
class SolidityLocals { class SolidityLocals {
constructor (_parent, _traceManager, _internalTreeCall) { constructor (_parent, _traceManager, _internalTreeCall) {
const self = this
this.event = new EventManager()
this.parent = _parent this.parent = _parent
this.internalTreeCall = _internalTreeCall this.internalTreeCall = _internalTreeCall
this.storageResolver = null this.storageResolver = null
...@@ -19,36 +31,57 @@ class SolidityLocals { ...@@ -19,36 +31,57 @@ class SolidityLocals {
extractData: solidityTypeFormatter.extractData extractData: solidityTypeFormatter.extractData
}) })
this.init() this.init()
this.event.register('solidityLocals', this, function (state) {
self.update(state)
})
this.event.register('solidityLocalsMessage', this, function (message) {
self.setMessage(message)
})
this.event.register('solidityLocalsUpdating', this, function () {
self.setUpdating()
})
this.view this.view
} }
update (data) {
this.basicPanel.update(data)
}
setMessage (message) {
this.basicPanel.setMessage(message)
}
setUpdating () {
this.basicPanel.setUpdating()
}
render () { render () {
this.view = yo`<div id='soliditylocals' > this.view = yo`<div id='soliditylocals'>${this.basicPanel.render()}</div>`
${this.basicPanel.render()}
</div>`
return this.view return this.view
} }
init () { init () {
const self = this
var decodeTimeout = null var decodeTimeout = null
this.parent.event.register('sourceLocationChanged', this, (sourceLocation) => { this.parent.event.register('sourceLocationChanged', this, (sourceLocation) => {
if (!this.storageResolver) { if (!this.storageResolver) {
this.basicPanel.setMessage('storage not ready') return self.event.trigger('solidityLocalsMessage', ['storage not ready'])
return
} }
if (decodeTimeout) { if (decodeTimeout) {
window.clearTimeout(decodeTimeout) window.clearTimeout(decodeTimeout)
} }
this.basicPanel.setUpdating() self.event.trigger('solidityLocalsUpdating')
decodeTimeout = setTimeout(() => { decodeTimeout = setTimeout(function () {
decode(this, sourceLocation) self.decode(sourceLocation)
}, 500) }, 500)
}) })
} }
}
function decode (self, sourceLocation) { decode (sourceLocation) {
self.basicPanel.setMessage('') const self = this
self.event.trigger('solidityLocalsMessage', [''])
self.traceManager.waterfall([ self.traceManager.waterfall([
self.traceManager.getStackAt, self.traceManager.getStackAt,
self.traceManager.getMemoryAt, self.traceManager.getMemoryAt,
...@@ -59,26 +92,24 @@ function decode (self, sourceLocation) { ...@@ -59,26 +92,24 @@ function decode (self, sourceLocation) {
var stack = result[0].value var stack = result[0].value
var memory = result[1].value var memory = result[1].value
try { try {
var storageViewer = new StorageViewer({ var storageViewer = new StorageViewer({ stepIndex: self.parent.currentStepIndex, tx: self.parent.tx, address: result[2].value }, self.storageResolver, self.traceManager)
stepIndex: self.parent.currentStepIndex,
tx: self.parent.tx,
address: result[2].value
}, self.storageResolver, self.traceManager)
localDecoder.solidityLocals(self.parent.currentStepIndex, self.internalTreeCall, stack, memory, storageViewer, sourceLocation).then((locals) => { localDecoder.solidityLocals(self.parent.currentStepIndex, self.internalTreeCall, stack, memory, storageViewer, sourceLocation).then((locals) => {
if (!locals.error) { if (!locals.error) {
self.basicPanel.update(locals) self.event.trigger('solidityLocals', [locals])
} }
if (!Object.keys(locals).length) { if (!Object.keys(locals).length) {
self.basicPanel.setMessage('no locals') self.event.trigger('solidityLocalsMessage', ['no locals'])
} }
}) })
} catch (e) { } catch (e) {
self.basicPanel.setMessage(e.message) self.event.trigger('solidityLocalsMessage', [e.message])
} }
} else { } else {
console.log(error) console.log(error)
} }
}) })
}
} }
module.exports = SolidityLocals module.exports = SolidityLocals
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment