-
Notifications
You must be signed in to change notification settings - Fork 4
/
create_group.go
53 lines (44 loc) · 1.18 KB
/
create_group.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package group
import (
. "github.com/kaifei-bianjie/common-parser/modules"
. "github.com/kaifei-bianjie/cosmosmod-parser/modules"
)
type (
DocTxMsgCreateGroup struct {
Admin string `bson:"admin"`
Members []MemberRequest `bson:"members"`
Metadata string `bson:"metadata"`
}
MemberRequest struct {
Address string `bson:"address"`
Weight string `bson:"weight"`
Metadata string `bson:"metadata"`
}
)
func (m *DocTxMsgCreateGroup) GetType() string {
return MsgTypeCreateGroup
}
func (m *DocTxMsgCreateGroup) BuildMsg(txMsg interface{}) {
msg := txMsg.(*MsgCreateGroup)
m.Admin = msg.Admin
members := make([]MemberRequest, 0, len(msg.Members))
for _, member := range msg.Members {
members = append(members, MemberRequest{
member.Address, member.Weight, member.Metadata,
})
}
m.Members = members
m.Metadata = msg.Metadata
}
func (m *DocTxMsgCreateGroup) HandleTxMsg(v SdkMsg) MsgDocInfo {
var addrs []string
msg := v.(*MsgCreateGroup)
for _, member := range msg.Members {
addrs = append(addrs, member.Address)
}
addrs = append(addrs, msg.Admin)
handler := func() (Msg, []string) {
return m, addrs
}
return CreateMsgDocInfo(v, handler)
}