diff options
author | obscuren <geffobscura@gmail.com> | 2014-05-14 20:57:05 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-05-14 20:57:05 +0800 |
commit | 9a057021c3bb7b73843677b7abefc7763f34e39e (patch) | |
tree | 308afb2f73808c990cd7f462727890c27dcb7bc0 /ethereal | |
parent | f18ec51cb3959cc662bfc7b84314cd1d3b1541b5 (diff) | |
download | dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar.gz dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar.bz2 dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar.lz dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar.xz dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.tar.zst dexon-9a057021c3bb7b73843677b7abefc7763f34e39e.zip |
Update wallet value for coinbase rewards. Implements #44 & #43
Diffstat (limited to 'ethereal')
-rw-r--r-- | ethereal/ui/gui.go | 38 |
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) } |