forked from cerc-io/plugeth
Added callback mechanism and updated UI
* UI Now updates when a new block has been broadcasted * Added a on, off and trigger
This commit is contained in:
parent
c535d0d246
commit
bbde892d50
@ -6,7 +6,7 @@ function postData(data, cb) {
|
||||
}
|
||||
|
||||
if(data.args === undefined) {
|
||||
data.args = []
|
||||
data.args = [];
|
||||
}
|
||||
|
||||
navigator.qt.postMessage(JSON.stringify(data));
|
||||
@ -24,11 +24,11 @@ window.eth = {
|
||||
getBlock: function(numberOrHash, cb) {
|
||||
var func;
|
||||
if(typeof numberOrHash == "string") {
|
||||
func = "getBlockByHash"
|
||||
func = "getBlockByHash";
|
||||
} else {
|
||||
func = "getBlockByNumber"
|
||||
func = "getBlockByNumber";
|
||||
}
|
||||
postData({call: func, args: [numberOrHash]}, cb)
|
||||
postData({call: func, args: [numberOrHash]}, cb);
|
||||
},
|
||||
|
||||
// Create transaction
|
||||
@ -36,18 +36,51 @@ window.eth = {
|
||||
// Creates a transaction with the current account
|
||||
// If no recipient is set, the Ethereum API will see it as a contract creation
|
||||
createTx: function(recipient, value, gas, gasPrice, data, cb) {
|
||||
postData({call: "createTx", args: [recipient, value, gas, gasPrice, data]}, cb)
|
||||
postData({call: "createTx", args: [recipient, value, gas, gasPrice, data]}, cb);
|
||||
},
|
||||
|
||||
getStorage: function(address, storageAddress, cb) {
|
||||
postData({call: "getStorage", args: [address, storageAddress]}, cb)
|
||||
postData({call: "getStorage", args: [address, storageAddress]}, cb);
|
||||
},
|
||||
|
||||
getKey: function(cb) {
|
||||
postData({call: "getKey"}, cb)
|
||||
postData({call: "getKey"}, cb);
|
||||
},
|
||||
|
||||
|
||||
on: function(event, cb) {
|
||||
if(eth._onCallbacks[event] === undefined) {
|
||||
eth._onCallbacks[event] = [];
|
||||
}
|
||||
|
||||
eth._onCallbacks[event].push(cb);
|
||||
|
||||
return this
|
||||
},
|
||||
off: function(event, cb) {
|
||||
if(eth._onCallbacks[event] !== undefined) {
|
||||
var callbacks = eth._onCallbacks[event];
|
||||
for(var i = 0; i < callbacks.length; i++) {
|
||||
if(callbacks[i] === cb) {
|
||||
delete callbacks[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this
|
||||
},
|
||||
|
||||
trigger: function(event, data) {
|
||||
var callbacks = eth._onCallbacks[event];
|
||||
if(callbacks !== undefined) {
|
||||
for(var i = 0; i < callbacks.length; i++) {
|
||||
callbacks[i](data);
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
window.eth._callbacks = {}
|
||||
window.eth._onCallbacks = {}
|
||||
|
||||
function debug(/**/) {
|
||||
var args = arguments;
|
||||
@ -66,13 +99,17 @@ function debug(/**/) {
|
||||
navigator.qt.onmessage = function(ev) {
|
||||
var data = JSON.parse(ev.data)
|
||||
|
||||
if(data._seed) {
|
||||
var cb = eth._callbacks[data._seed];
|
||||
if(cb) {
|
||||
// Call the callback
|
||||
cb(data.data);
|
||||
// Remove the "trigger" callback
|
||||
delete eth._callbacks[ev._seed];
|
||||
if(data._event !== undefined) {
|
||||
eth.trigger(data._event, data.data);
|
||||
} else {
|
||||
if(data._seed) {
|
||||
var cb = eth._callbacks[data._seed];
|
||||
if(cb) {
|
||||
// Call the callback
|
||||
cb(data.data);
|
||||
// Remove the "trigger" callback
|
||||
delete eth._callbacks[ev._seed];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,6 +117,7 @@ Component {
|
||||
|
||||
TextArea {
|
||||
id: codeView
|
||||
height: 300
|
||||
anchors.topMargin: 5
|
||||
Layout.fillWidth: true
|
||||
width: parent.width /2
|
||||
|
@ -18,13 +18,11 @@ ApplicationWindow {
|
||||
MenuBar {
|
||||
Menu {
|
||||
title: "File"
|
||||
/*
|
||||
MenuItem {
|
||||
text: "Import App"
|
||||
shortcut: "Ctrl+o"
|
||||
onTriggered: openAppDialog.open()
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
Menu {
|
||||
|
@ -79,6 +79,10 @@ ApplicationWindow {
|
||||
function postData(seed, data) {
|
||||
webview.experimental.postMessage(JSON.stringify({data: data, _seed: seed}))
|
||||
}
|
||||
|
||||
function onNewBlockCb(block) {
|
||||
webview.experimental.postMessage(JSON.stringify({data: block, _event: "block:new"}))
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
|
@ -23,11 +23,16 @@ function tests() {
|
||||
|
||||
function init() {
|
||||
eth.getKey(function(key) {
|
||||
eth.getStorage(jefcoinAddr, key, function(storage) {
|
||||
document.querySelector("#currentAmount").innerHTML = "Amount: " + storage;
|
||||
});
|
||||
|
||||
eth.on("block:new", function() {
|
||||
eth.getStorage(jefcoinAddr, key, function(storage) {
|
||||
debug("Currently in storage: ", storage);
|
||||
document.querySelector("#currentAmount").innerHTML = "Amount: " + storage;
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user