aboutsummaryrefslogtreecommitdiffstats
path: root/ethereal/ui/gui.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-05-14 20:57:05 +0800
committerobscuren <geffobscura@gmail.com>2014-05-14 20:57:05 +0800
commit9a057021c3bb7b73843677b7abefc7763f34e39e (patch)
tree308afb2f73808c990cd7f462727890c27dcb7bc0 /ethereal/ui/gui.go
parentf18ec51cb3959cc662bfc7b84314cd1d3b1541b5 (diff)
downloaddexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar.gz
dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar.zst
dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.zip
Update wallet value for coinbase rewards. Implements #44 & #43
Diffstat (limited to 'ethereal/ui/gui.go')
-rw-r--r--ethereal/ui/gui.go38
1 files changed, 29 insertions, 9 deletions
diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go
index 396447a81..d6d65cc0b 100644
--- a/ethereal/ui/gui.go
+++ b/ethereal/ui/gui.go
@@ -158,8 +158,29 @@ func (gui *Gui) processBlock(block *ethchain.Block) {
gui.win.Root().Call("addBlock", ethpub.NewPBlock(block))
}
+func (gui *Gui) setWalletValue(amount, unconfirmedFunds *big.Int) {
+ var str string
+ if unconfirmedFunds != nil {
+ pos := "+"
+ if unconfirmedFunds.Cmp(big.NewInt(0)) >= 0 {
+ pos = "-"
+ }
+ val := ethutil.CurrencyToString(new(big.Int).Abs(ethutil.BigCopy(unconfirmedFunds)))
+ str = fmt.Sprintf("%v (%s %v)", ethutil.CurrencyToString(amount), pos, val)
+ } else {
+ str = fmt.Sprintf("%v", ethutil.CurrencyToString(amount))
+ }
+
+ gui.win.Root().Call("setWalletValue", str)
+}
+
// Simple go routine function that updates the list of peers in the GUI
func (gui *Gui) update() {
+ blockChan := make(chan ethutil.React, 1)
+ reactor := gui.eth.Reactor()
+
+ reactor.Subscribe("newBlock", blockChan)
+
txChan := make(chan ethchain.TxMsg, 1)
gui.eth.TxPool().Subscribe(txChan)
@@ -170,6 +191,12 @@ func (gui *Gui) update() {
for {
select {
+ case b := <-blockChan:
+ block := b.Resource.(*ethchain.Block)
+ if bytes.Compare(block.Coinbase, gui.addr) == 0 {
+ gui.setWalletValue(gui.eth.StateManager().ProcState().GetAccount(gui.addr).Amount, nil)
+ }
+
case txMsg := <-txChan:
tx := txMsg.Tx
@@ -191,14 +218,7 @@ func (gui *Gui) update() {
unconfirmedFunds.Add(unconfirmedFunds, tx.Value)
}
- pos := "+"
- if unconfirmedFunds.Cmp(big.NewInt(0)) >= 0 {
- pos = "-"
- }
- val := ethutil.CurrencyToString(new(big.Int).Abs(ethutil.BigCopy(unconfirmedFunds)))
- str := fmt.Sprintf("%v (%s %v)", ethutil.CurrencyToString(object.Amount), pos, val)
-
- gui.win.Root().Call("setWalletValue", str)
+ gui.setWalletValue(object.Amount, unconfirmedFunds)
} else {
object := state.GetAccount(gui.addr)
if bytes.Compare(tx.Sender(), gui.addr) == 0 {
@@ -207,7 +227,7 @@ func (gui *Gui) update() {
object.AddAmount(tx.Value)
}
- gui.win.Root().Call("setWalletValue", fmt.Sprintf("%v", ethutil.CurrencyToString(object.Amount)))
+ gui.setWalletValue(object.Amount, nil)
state.SetStateObject(object)
}