Merge branch 'develop' into feature/rpc

This commit is contained in:
Maran 2014-05-05 14:17:20 +02:00
commit cb9ca992de
5 changed files with 58 additions and 24 deletions

View File

@ -40,6 +40,10 @@ window.eth = {
postData({call: "getBalance", args: [address]}, cb); postData({call: "getBalance", args: [address]}, cb);
}, },
getSecretToAddress: function(sec, cb) {
postData({call: "getSecretToAddress", args: [sec]}, cb);
},
watch: function(address, storageAddrOrCb, cb) { watch: function(address, storageAddrOrCb, cb) {
var ev; var ev;
if(cb === undefined) { if(cb === undefined) {
@ -101,7 +105,13 @@ window.eth = {
var callbacks = eth._onCallbacks[event]; var callbacks = eth._onCallbacks[event];
if(callbacks !== undefined) { if(callbacks !== undefined) {
for(var i = 0; i < callbacks.length; i++) { for(var i = 0; i < callbacks.length; i++) {
callbacks[i](data); // Figure out whether the returned data was an array
// array means multiple return arguments (multiple params)
if(data instanceof Array) {
callbacks[i].apply(this, data);
} else {
callbacks[i].call(this, data);
}
} }
} }
}, },
@ -109,6 +119,11 @@ window.eth = {
window.eth._callbacks = {} window.eth._callbacks = {}
window.eth._onCallbacks = {} window.eth._onCallbacks = {}
function hello() {
debug("hello")
window.dataTest = true;
}
function debug(/**/) { function debug(/**/) {
var args = arguments; var args = arguments;
var msg = "" var msg = ""
@ -120,6 +135,7 @@ function debug(/**/) {
} }
} }
postData({call:"debug", args:[msg]})
document.getElementById("debug").innerHTML += "<br>" + msg document.getElementById("debug").innerHTML += "<br>" + msg
} }
@ -146,8 +162,14 @@ navigator.qt.onmessage = function(ev) {
if(data._seed) { if(data._seed) {
var cb = eth._callbacks[data._seed]; var cb = eth._callbacks[data._seed];
if(cb) { if(cb) {
// Call the callback // Figure out whether the returned data was an array
cb(data.data); // array means multiple return arguments (multiple params)
if(data.data instanceof Array) {
cb.apply(this, data.data)
} else {
cb.call(this, data.data)
}
// Remove the "trigger" callback // Remove the "trigger" callback
delete eth._callbacks[ev._seed]; delete eth._callbacks[ev._seed];
} }
@ -211,3 +233,4 @@ String.prototype.hex2bin = function() {
String.prototype.num2bin = function() { String.prototype.num2bin = function() {
return ("0x"+parseInt(this).toString(16)).bin() return ("0x"+parseInt(this).toString(16)).bin()
} }

View File

@ -41,7 +41,7 @@ ApplicationWindow {
experimental.preferences.developerExtrasEnabled: true experimental.preferences.developerExtrasEnabled: true
experimental.userScripts: [ui.assetPath("ethereum.js")] experimental.userScripts: [ui.assetPath("ethereum.js")]
experimental.onMessageReceived: { experimental.onMessageReceived: {
//console.log("[onMessageReceived]: ", message.data) console.log("[onMessageReceived]: ", message.data)
// TODO move to messaging.js // TODO move to messaging.js
var data = JSON.parse(message.data) var data = JSON.parse(message.data)
@ -81,8 +81,9 @@ ApplicationWindow {
break break
case "getKey": case "getKey":
var keys = eth.getKey() var key = eth.getKey().privateKey;
postData(data._seed, keys)
postData(data._seed, key)
break break
case "watch": case "watch":
require(1) require(1)
@ -98,6 +99,14 @@ ApplicationWindow {
window[key] = data.args[key]; window[key] = data.args[key];
} }
} }
break;
case "getSecretToAddress":
require(1)
postData(data._seed, eth.secretToAddress(data.args[0]))
break;
case "debug":
console.log(data.args[0]);
break;
} }
} catch(e) { } catch(e) {
console.log(data.call + ": " + e) console.log(data.call + ": " + e)
@ -124,7 +133,9 @@ ApplicationWindow {
function onObjectChangeCb(stateObject) { function onObjectChangeCb(stateObject) {
postEvent("object:"+stateObject.address(), stateObject) postEvent("object:"+stateObject.address(), stateObject)
} }
function onStorageChangeCb() { function onStorageChangeCb(storageObject) {
var ev = ["storage", storageObject.stateAddress, storageObject.address].join(":");
postEvent(ev, [storageObject.address, storageObject.value])
} }
} }

View File

@ -5,9 +5,11 @@
<link rel="stylesheet" href="bootstrap.min.css"> <link rel="stylesheet" href="bootstrap.min.css">
<link rel="stylesheet" href="bootstrap-theme.min.css"> <link rel="stylesheet" href="bootstrap-theme.min.css">
<link rel="stylesheet" href="samplecoin.css"> <link rel="stylesheet" href="samplecoin.css">
<script src="promise.min.js"></script>
<meta name="viewport" content="minimum-scale=1; maximum-scale=1; initial-scale=1;"> <meta name="viewport" content="minimum-scale=1; maximum-scale=1; initial-scale=1;">
<script type="text/javascript"> <script type="text/javascript">
var jefcoinAddr = "3dff537f51350239abc95c76a5864aa605259e7d" var jefcoinAddr = "3dff537f51350239abc95c76a5864aa605259e7d"
var mAddr = "" var mAddr = ""
@ -17,23 +19,23 @@ function createTransaction() {
var data = (("0x"+addr).pad(32) + amount.pad(32)).unbin() var data = (("0x"+addr).pad(32) + amount.pad(32)).unbin()
eth.transact(mAddr, jefcoinAddr, 0, "10000000", "250", data, function(receipt) { eth.transact(mAddr, jefcoinAddr, 0, "10000000", "250", data, function(receipt) {
debug("received tx hash:", receipt) debug("received tx hash:", reciept.address)
}) })
} }
function init() { function init() {
eth.set({width: 500}) eth.set({width: 500});
eth.getKey(function(keyPair) { eth.getKey(function(sec) {
mAddr = keyPair.privateKey; eth.getSecretToAddress(sec, function(addr) {
mAddr = addr;
eth.getStorageAt(jefcoinAddr, keyPair.address, function(storage) { eth.getStorageAt(jefcoinAddr, addr, function(storage) {
document.querySelector("#current-amount").innerHTML = storage; document.querySelector("#current-amount").innerHTML = storage;
}); });
eth.watch(jefcoinAddr, function(stateObject) { eth.watch(jefcoinAddr, addr, function(addr, value) {
eth.getStorageAt(jefcoinAddr, keyPair.address, function(storage) { document.querySelector("#current-amount").innerHTML = value
document.querySelector("#current-amount").innerHTML = storage;
}); });
}); });
}); });

View File

@ -6,7 +6,6 @@ import (
"github.com/ethereum/eth-go/ethpub" "github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil" "github.com/ethereum/eth-go/ethutil"
"github.com/go-qml/qml" "github.com/go-qml/qml"
"math/big"
) )
type AppContainer interface { type AppContainer interface {
@ -18,7 +17,7 @@ type AppContainer interface {
NewBlock(*ethchain.Block) NewBlock(*ethchain.Block)
ObjectChanged(*ethchain.StateObject) ObjectChanged(*ethchain.StateObject)
StorageChanged(*ethchain.StateObject, []byte, *big.Int) StorageChanged(*ethchain.StorageState)
} }
type ExtApplication struct { type ExtApplication struct {
@ -105,8 +104,8 @@ out:
case object := <-app.changeChan: case object := <-app.changeChan:
if stateObject, ok := object.Resource.(*ethchain.StateObject); ok { if stateObject, ok := object.Resource.(*ethchain.StateObject); ok {
app.container.ObjectChanged(stateObject) app.container.ObjectChanged(stateObject)
} else if _, ok := object.Resource.(*big.Int); ok { } else if storageObject, ok := object.Resource.(*ethchain.StorageState); ok {
// app.container.StorageChanged(storageObject)
} }
} }
} }

View File

@ -6,7 +6,6 @@ import (
"github.com/ethereum/eth-go/ethpub" "github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil" "github.com/ethereum/eth-go/ethutil"
"github.com/go-qml/qml" "github.com/go-qml/qml"
"math/big"
"path/filepath" "path/filepath"
) )
@ -65,8 +64,8 @@ func (app *HtmlApplication) ObjectChanged(stateObject *ethchain.StateObject) {
app.webView.Call("onObjectChangeCb", ethpub.NewPStateObject(stateObject)) app.webView.Call("onObjectChangeCb", ethpub.NewPStateObject(stateObject))
} }
func (app *HtmlApplication) StorageChanged(stateObject *ethchain.StateObject, addr []byte, value *big.Int) { func (app *HtmlApplication) StorageChanged(storageObject *ethchain.StorageState) {
app.webView.Call("onStorageChangeCb", nil) app.webView.Call("onStorageChangeCb", ethpub.NewPStorageState(storageObject))
} }
func (app *HtmlApplication) Destroy() { func (app *HtmlApplication) Destroy() {