-
Notifications
You must be signed in to change notification settings - Fork 0
/
custom_tx.go
98 lines (87 loc) · 3.81 KB
/
custom_tx.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package custom_bindings
import (
"bytes"
"encoding/json"
sdkerrors "cosmossdk.io/errors"
wasmKeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
"github.com/CosmWasm/wasmd/x/wasm/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/gogo/protobuf/jsonpb"
protocolTypes "github.com/bitbadges/bitbadgeschain/x/protocols/types"
badgeTypes "github.com/bitbadges/bitbadgeschain/x/badges/types"
)
func EncodeBitBadgesModuleMessage() wasmKeeper.CustomEncoder {
return func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) {
// Convert message and route to corresponding handler
jsonData, err := msg.MarshalJSON()
if err != nil {
return nil, sdkerrors.Wrap(err, err.Error())
}
reader := bytes.NewReader(jsonData)
isBadgeModuleMsg := false
var badgeCustomMsg badgeTypes.BadgeCustomMsgType
err = jsonpb.Unmarshal(reader, &badgeCustomMsg)
if err == nil {
isBadgeModuleMsg = true
}
if isBadgeModuleMsg {
reader = bytes.NewReader(jsonData)
var badgeCustomMsg badgeTypes.BadgeCustomMsgType
err = jsonpb.Unmarshal(reader, &badgeCustomMsg)
if err != nil {
return nil, sdkerrors.Wrap(err, err.Error())
}
switch {
case badgeCustomMsg.UniversalUpdateCollectionMsg != nil:
badgeCustomMsg.UniversalUpdateCollectionMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.UniversalUpdateCollectionMsg}, nil
case badgeCustomMsg.CreateCollectionMsg != nil:
badgeCustomMsg.CreateCollectionMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.CreateCollectionMsg}, nil
case badgeCustomMsg.CreateAddressListsMsg != nil:
badgeCustomMsg.CreateAddressListsMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.CreateAddressListsMsg}, nil
case badgeCustomMsg.UpdateCollectionMsg != nil:
badgeCustomMsg.UpdateCollectionMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.UpdateCollectionMsg}, nil
case badgeCustomMsg.DeleteCollectionMsg != nil:
badgeCustomMsg.DeleteCollectionMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.DeleteCollectionMsg}, nil
case badgeCustomMsg.TransferBadgesMsg != nil:
badgeCustomMsg.TransferBadgesMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.TransferBadgesMsg}, nil
case badgeCustomMsg.UpdateUserApprovalsMsg != nil:
badgeCustomMsg.UpdateUserApprovalsMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.UpdateUserApprovalsMsg}, nil
default:
return nil, sdkerrors.Wrapf(types.ErrInvalidMsg, "Unknown custom badge message variant %s", badgeCustomMsg)
}
} else {
reader = bytes.NewReader(jsonData)
var badgeCustomMsg protocolTypes.ProtocolCustomMsgType
err = jsonpb.Unmarshal(reader, &badgeCustomMsg)
if err != nil {
return nil, sdkerrors.Wrap(err, err.Error())
}
switch {
case badgeCustomMsg.CreateProtocolMsg != nil:
badgeCustomMsg.CreateProtocolMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.CreateProtocolMsg}, nil
case badgeCustomMsg.UpdateProtocolMsg != nil:
badgeCustomMsg.UpdateProtocolMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.UpdateProtocolMsg}, nil
case badgeCustomMsg.DeleteProtocolMsg != nil:
badgeCustomMsg.DeleteProtocolMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.DeleteProtocolMsg}, nil
case badgeCustomMsg.SetCollectionForProtocolMsg != nil:
badgeCustomMsg.SetCollectionForProtocolMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.SetCollectionForProtocolMsg}, nil
case badgeCustomMsg.UnsetCollectionForProtocolMsg != nil:
badgeCustomMsg.UnsetCollectionForProtocolMsg.Creator = sender.String()
return []sdk.Msg{badgeCustomMsg.UnsetCollectionForProtocolMsg}, nil
default:
return nil, sdkerrors.Wrapf(types.ErrInvalidMsg, "Unknown custom badge message variant %s", badgeCustomMsg)
}
}
}
}