Implement getStateKeyVal for JS bindings.
Gives JS the option to 'loop' over contract key/val storage
This commit is contained in:
parent
307fe4a3cd
commit
7843390ecd
@ -32,6 +32,10 @@ window.eth = {
|
|||||||
postData({call: "getStorage", args: [address, storageAddress]}, cb);
|
postData({call: "getStorage", args: [address, storageAddress]}, cb);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getStateKeyVals: function(address, cb){
|
||||||
|
postData({call: "getStateKeyVals", args: [address]}, cb);
|
||||||
|
},
|
||||||
|
|
||||||
getKey: function(cb) {
|
getKey: function(cb) {
|
||||||
postData({call: "getKey"}, cb);
|
postData({call: "getKey"}, cb);
|
||||||
},
|
},
|
||||||
|
@ -34,7 +34,6 @@ ApplicationWindow {
|
|||||||
top: parent.top
|
top: parent.top
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
onTitleChanged: { window.title = title }
|
onTitleChanged: { window.title = title }
|
||||||
experimental.preferences.javascriptEnabled: true
|
experimental.preferences.javascriptEnabled: true
|
||||||
experimental.preferences.navigatorQtObjectEnabled: true
|
experimental.preferences.navigatorQtObjectEnabled: true
|
||||||
@ -97,6 +96,12 @@ ApplicationWindow {
|
|||||||
var storage = stateObject.getStorage(data.args[1])
|
var storage = stateObject.getStorage(data.args[1])
|
||||||
postData(data._seed, storage)
|
postData(data._seed, storage)
|
||||||
|
|
||||||
|
break
|
||||||
|
case "getStateKeyVals":
|
||||||
|
require(1);
|
||||||
|
var stateObject = eth.getStateObject(data.args[0]).stateKeyVal(true)
|
||||||
|
postData(data._seed,stateObject)
|
||||||
|
|
||||||
break
|
break
|
||||||
case "getBalance":
|
case "getBalance":
|
||||||
require(1);
|
require(1);
|
||||||
@ -188,7 +193,7 @@ ApplicationWindow {
|
|||||||
|
|
||||||
WebView {
|
WebView {
|
||||||
id: inspector
|
id: inspector
|
||||||
visible: false
|
visible: true
|
||||||
url: webview.experimental.remoteInspectorUrl
|
url: webview.experimental.remoteInspectorUrl
|
||||||
anchors {
|
anchors {
|
||||||
left: root.left
|
left: root.left
|
||||||
|
@ -65,6 +65,8 @@ func (gui *Gui) Start(assetPath string) {
|
|||||||
Init: func(p *ethpub.PBlock, obj qml.Object) { p.Number = 0; p.Hash = "" },
|
Init: func(p *ethpub.PBlock, obj qml.Object) { p.Number = 0; p.Hash = "" },
|
||||||
}, {
|
}, {
|
||||||
Init: func(p *ethpub.PTx, obj qml.Object) { p.Value = ""; p.Hash = ""; p.Address = "" },
|
Init: func(p *ethpub.PTx, obj qml.Object) { p.Value = ""; p.Hash = ""; p.Address = "" },
|
||||||
|
}, {
|
||||||
|
Init: func(p *ethpub.KeyVal, obj qml.Object) { p.Key = ""; p.Value = "" },
|
||||||
}})
|
}})
|
||||||
|
|
||||||
ethutil.Config.SetClientString(fmt.Sprintf("/Ethereal v%s", version))
|
ethutil.Config.SetClientString(fmt.Sprintf("/Ethereal v%s", version))
|
||||||
|
@ -78,6 +78,10 @@ func (self *JSEthereum) GetStateObject(addr string) otto.Value {
|
|||||||
return self.toVal(self.PEthereum.GetStateObject(addr))
|
return self.toVal(self.PEthereum.GetStateObject(addr))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *JSEthereum) GetStateKeyVals(addr string) otto.Value {
|
||||||
|
return self.toVal(self.PEthereum.GetStateObject(addr).StateKeyVal(false))
|
||||||
|
}
|
||||||
|
|
||||||
func (self *JSEthereum) Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr string) otto.Value {
|
func (self *JSEthereum) Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr string) otto.Value {
|
||||||
r, err := self.PEthereum.Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr)
|
r, err := self.PEthereum.Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -105,7 +109,7 @@ func (self *JSEthereum) toVal(v interface{}) otto.Value {
|
|||||||
result, err := self.vm.ToValue(v)
|
result, err := self.vm.ToValue(v)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println("Value unknown:", err)
|
||||||
|
|
||||||
return otto.UndefinedValue()
|
return otto.UndefinedValue()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user