aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-01-21 03:22:38 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-01-21 03:22:38 +0800
commitd92fde698031758f64fcabe7af354360a93f6326 (patch)
tree5f843fe17762e0aa87a0e790d527886f2cc8eea5 /ui
parent499bc404e818848e53c8c7f4f6d1bfe2349e97ae (diff)
parent87f50659db7a4bf194769b05f541d2ccf02f4fc8 (diff)
downloaddexon-d92fde698031758f64fcabe7af354360a93f6326.tar
dexon-d92fde698031758f64fcabe7af354360a93f6326.tar.gz
dexon-d92fde698031758f64fcabe7af354360a93f6326.tar.bz2
dexon-d92fde698031758f64fcabe7af354360a93f6326.tar.lz
dexon-d92fde698031758f64fcabe7af354360a93f6326.tar.xz
dexon-d92fde698031758f64fcabe7af354360a93f6326.tar.zst
dexon-d92fde698031758f64fcabe7af354360a93f6326.zip
Merge branch 'develop' into jsonrpc
Diffstat (limited to 'ui')
-rw-r--r--ui/filter.go20
-rw-r--r--ui/qt/filter.go5
-rw-r--r--ui/qt/qwhisper/message.go10
-rw-r--r--ui/qt/qwhisper/whisper.go59
4 files changed, 60 insertions, 34 deletions
diff --git a/ui/filter.go b/ui/filter.go
index 88faad5ca..e0797dad2 100644
--- a/ui/filter.go
+++ b/ui/filter.go
@@ -5,6 +5,16 @@ import (
"github.com/ethereum/go-ethereum/ethutil"
)
+func fromHex(s string) []byte {
+ if len(s) > 1 {
+ if s[0:2] == "0x" {
+ s = s[2:]
+ }
+ return ethutil.Hex2Bytes(s)
+ }
+ return nil
+}
+
func NewFilterFromMap(object map[string]interface{}, eth core.EthManager) *core.Filter {
filter := core.NewFilter(eth)
@@ -20,12 +30,12 @@ func NewFilterFromMap(object map[string]interface{}, eth core.EthManager) *core.
if object["to"] != nil {
val := ethutil.NewValue(object["to"])
- filter.AddTo(ethutil.Hex2Bytes(val.Str()))
+ filter.AddTo(fromHex(val.Str()))
}
if object["from"] != nil {
val := ethutil.NewValue(object["from"])
- filter.AddFrom(ethutil.Hex2Bytes(val.Str()))
+ filter.AddFrom(fromHex(val.Str()))
}
if object["max"] != nil {
@@ -48,11 +58,11 @@ func NewFilterFromMap(object map[string]interface{}, eth core.EthManager) *core.
// Conversion methodn
func mapToAccountChange(m map[string]interface{}) (d core.AccountChange) {
if str, ok := m["id"].(string); ok {
- d.Address = ethutil.Hex2Bytes(str)
+ d.Address = fromHex(str)
}
if str, ok := m["at"].(string); ok {
- d.StateAddress = ethutil.Hex2Bytes(str)
+ d.StateAddress = fromHex(str)
}
return
@@ -62,7 +72,7 @@ func mapToAccountChange(m map[string]interface{}) (d core.AccountChange) {
// ["aabbccdd", {id: "ccddee", at: "11223344"}], "aabbcc", {id: "ccddee", at: "1122"}
func makeAltered(v interface{}) (d []core.AccountChange) {
if str, ok := v.(string); ok {
- d = append(d, core.AccountChange{ethutil.Hex2Bytes(str), nil})
+ d = append(d, core.AccountChange{fromHex(str), nil})
} else if obj, ok := v.(map[string]interface{}); ok {
d = append(d, mapToAccountChange(obj))
} else if slice, ok := v.([]interface{}); ok {
diff --git a/ui/qt/filter.go b/ui/qt/filter.go
index c68936401..423d5bd43 100644
--- a/ui/qt/filter.go
+++ b/ui/qt/filter.go
@@ -1,8 +1,6 @@
package qt
import (
- "fmt"
-
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/ui"
"gopkg.in/qml.v1"
@@ -23,13 +21,10 @@ func makeAltered(v interface{}) (d []core.AccountChange) {
var s []interface{}
qList.Convert(&s)
- fmt.Println(s)
-
d = makeAltered(s)
} else if qMap, ok := v.(*qml.Map); ok {
var m map[string]interface{}
qMap.Convert(&m)
- fmt.Println(m)
d = makeAltered(m)
}
diff --git a/ui/qt/qwhisper/message.go b/ui/qt/qwhisper/message.go
index c87647399..26e72ac93 100644
--- a/ui/qt/qwhisper/message.go
+++ b/ui/qt/qwhisper/message.go
@@ -8,16 +8,16 @@ import (
type Message struct {
ref *whisper.Message
- Flags int32
- Payload string
- From string
+ Flags int32 `json:"flags"`
+ Payload string `json:"payload"`
+ From string `json:"from"`
}
func ToQMessage(msg *whisper.Message) *Message {
return &Message{
ref: msg,
Flags: int32(msg.Flags),
- Payload: ethutil.Bytes2Hex(msg.Payload),
- From: ethutil.Bytes2Hex(crypto.FromECDSAPub(msg.Recover())),
+ Payload: "0x" + ethutil.Bytes2Hex(msg.Payload),
+ From: "0x" + ethutil.Bytes2Hex(crypto.FromECDSAPub(msg.Recover())),
}
}
diff --git a/ui/qt/qwhisper/whisper.go b/ui/qt/qwhisper/whisper.go
index 0627acd29..644c147b7 100644
--- a/ui/qt/qwhisper/whisper.go
+++ b/ui/qt/qwhisper/whisper.go
@@ -1,15 +1,17 @@
package qwhisper
import (
- "fmt"
"time"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethutil"
+ "github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/whisper"
"gopkg.in/qml.v1"
)
+var qlogger = logger.NewLogger("QSHH")
+
func fromHex(s string) []byte {
if len(s) > 1 {
return ethutil.Hex2Bytes(s[2:])
@@ -39,32 +41,41 @@ func (self *Whisper) Post(payload []string, to, from string, topics []string, pr
data = append(data, fromHex(d)...)
}
- msg := whisper.NewMessage(data)
- envelope, err := msg.Seal(time.Duration(priority*100000), whisper.Opts{
- Ttl: time.Duration(ttl),
- To: crypto.ToECDSAPub(fromHex(to)),
- From: crypto.ToECDSA(fromHex(from)),
- Topics: whisper.TopicsFromString(topics...),
- })
- if err != nil {
- fmt.Println(err)
- // handle error
- return
- }
+ pk := crypto.ToECDSAPub(fromHex(from))
+ if key := self.Whisper.GetIdentity(pk); key != nil {
+ msg := whisper.NewMessage(data)
+ envelope, err := msg.Seal(time.Duration(priority*100000), whisper.Opts{
+ Ttl: time.Duration(ttl) * time.Second,
+ To: crypto.ToECDSAPub(fromHex(to)),
+ From: key,
+ Topics: whisper.TopicsFromString(topics...),
+ })
+
+ if err != nil {
+ qlogger.Infoln(err)
+ // handle error
+ return
+ }
- if err := self.Whisper.Send(envelope); err != nil {
- fmt.Println(err)
- // handle error
- return
+ if err := self.Whisper.Send(envelope); err != nil {
+ qlogger.Infoln(err)
+ // handle error
+ return
+ }
+ } else {
+ qlogger.Infoln("unmatched pub / priv for seal")
}
+
}
func (self *Whisper) NewIdentity() string {
- return toHex(self.Whisper.NewIdentity().D.Bytes())
+ key := self.Whisper.NewIdentity()
+
+ return toHex(crypto.FromECDSAPub(&key.PublicKey))
}
func (self *Whisper) HasIdentity(key string) bool {
- return self.Whisper.HasIdentity(crypto.ToECDSA(fromHex(key)))
+ return self.Whisper.HasIdentity(crypto.ToECDSAPub(fromHex(key)))
}
func (self *Whisper) Watch(opts map[string]interface{}, view *qml.Common) int {
@@ -82,6 +93,16 @@ func (self *Whisper) Watch(opts map[string]interface{}, view *qml.Common) int {
return i
}
+func (self *Whisper) Messages(id int) (messages *ethutil.List) {
+ msgs := self.Whisper.Messages(id)
+ messages = ethutil.EmptyList()
+ for _, message := range msgs {
+ messages.Append(ToQMessage(message))
+ }
+
+ return
+}
+
func filterFromMap(opts map[string]interface{}) (f whisper.Filter) {
if to, ok := opts["to"].(string); ok {
f.To = crypto.ToECDSA(fromHex(to))