github.com/cosmos/cosmos-sdk@v0.50.10/x/group/msgs.go (about) 1 package group 2 3 import ( 4 "github.com/cosmos/gogoproto/proto" 5 6 "github.com/cosmos/cosmos-sdk/codec/types" 7 sdk "github.com/cosmos/cosmos-sdk/types" 8 sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" 9 "github.com/cosmos/cosmos-sdk/types/tx" 10 ) 11 12 var ( 13 _ sdk.Msg = &MsgCreateGroup{} 14 _ sdk.Msg = &MsgUpdateGroupAdmin{} 15 _ sdk.Msg = &MsgUpdateGroupMetadata{} 16 _ sdk.Msg = &MsgUpdateGroupMembers{} 17 _ sdk.Msg = &MsgUpdateGroupMembers{} 18 _ sdk.Msg = &MsgCreateGroupWithPolicy{} 19 _ sdk.Msg = &MsgCreateGroupPolicy{} 20 _ sdk.Msg = &MsgUpdateGroupPolicyAdmin{} 21 _ sdk.Msg = &MsgUpdateGroupPolicyDecisionPolicy{} 22 _ sdk.Msg = &MsgUpdateGroupPolicyMetadata{} 23 _ sdk.Msg = &MsgLeaveGroup{} 24 _ sdk.Msg = &MsgExec{} 25 _ sdk.Msg = &MsgVote{} 26 _ sdk.Msg = &MsgWithdrawProposal{} 27 _ sdk.Msg = &MsgSubmitProposal{} 28 _ sdk.Msg = &MsgCreateGroupPolicy{} 29 30 _ types.UnpackInterfacesMessage = MsgCreateGroupPolicy{} 31 _ types.UnpackInterfacesMessage = MsgUpdateGroupPolicyDecisionPolicy{} 32 _ types.UnpackInterfacesMessage = MsgCreateGroupWithPolicy{} 33 ) 34 35 // GetGroupID gets the group id of the MsgUpdateGroupMetadata. 36 func (m *MsgUpdateGroupMetadata) GetGroupID() uint64 { 37 return m.GroupId 38 } 39 40 // GetGroupID gets the group id of the MsgUpdateGroupMembers. 41 func (m *MsgUpdateGroupMembers) GetGroupID() uint64 { 42 return m.GroupId 43 } 44 45 // GetGroupID gets the group id of the MsgUpdateGroupAdmin. 46 func (m *MsgUpdateGroupAdmin) GetGroupID() uint64 { 47 return m.GroupId 48 } 49 50 // NewMsgCreateGroupWithPolicy creates a new MsgCreateGroupWithPolicy. 51 func NewMsgCreateGroupWithPolicy(admin string, members []MemberRequest, groupMetadata, groupPolicyMetadata string, groupPolicyAsAdmin bool, decisionPolicy DecisionPolicy) (*MsgCreateGroupWithPolicy, error) { 52 m := &MsgCreateGroupWithPolicy{ 53 Admin: admin, 54 Members: members, 55 GroupMetadata: groupMetadata, 56 GroupPolicyMetadata: groupPolicyMetadata, 57 GroupPolicyAsAdmin: groupPolicyAsAdmin, 58 } 59 err := m.SetDecisionPolicy(decisionPolicy) 60 if err != nil { 61 return nil, err 62 } 63 return m, nil 64 } 65 66 // GetDecisionPolicy gets the decision policy of MsgCreateGroupWithPolicy. 67 func (m *MsgCreateGroupWithPolicy) GetDecisionPolicy() (DecisionPolicy, error) { 68 decisionPolicy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy) 69 if !ok { 70 return nil, sdkerrors.ErrInvalidType.Wrapf("expected %T, got %T", (DecisionPolicy)(nil), m.DecisionPolicy.GetCachedValue()) 71 } 72 return decisionPolicy, nil 73 } 74 75 // SetDecisionPolicy sets the decision policy for MsgCreateGroupWithPolicy. 76 func (m *MsgCreateGroupWithPolicy) SetDecisionPolicy(decisionPolicy DecisionPolicy) error { 77 any, err := types.NewAnyWithValue(decisionPolicy) 78 if err != nil { 79 return err 80 } 81 m.DecisionPolicy = any 82 return nil 83 } 84 85 // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces 86 func (m MsgCreateGroupWithPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error { 87 var decisionPolicy DecisionPolicy 88 return unpacker.UnpackAny(m.DecisionPolicy, &decisionPolicy) 89 } 90 91 // NewMsgUpdateGroupPolicyDecisionPolicy creates a new MsgUpdateGroupPolicyDecisionPolicy. 92 func NewMsgUpdateGroupPolicyDecisionPolicy(admin, address sdk.AccAddress, decisionPolicy DecisionPolicy) (*MsgUpdateGroupPolicyDecisionPolicy, error) { 93 m := &MsgUpdateGroupPolicyDecisionPolicy{ 94 Admin: admin.String(), 95 GroupPolicyAddress: address.String(), 96 } 97 err := m.SetDecisionPolicy(decisionPolicy) 98 if err != nil { 99 return nil, err 100 } 101 return m, nil 102 } 103 104 // SetDecisionPolicy sets the decision policy for MsgUpdateGroupPolicyDecisionPolicy. 105 func (m *MsgUpdateGroupPolicyDecisionPolicy) SetDecisionPolicy(decisionPolicy DecisionPolicy) error { 106 msg, ok := decisionPolicy.(proto.Message) 107 if !ok { 108 return sdkerrors.ErrInvalidType.Wrapf("can't proto marshal %T", msg) 109 } 110 any, err := types.NewAnyWithValue(msg) 111 if err != nil { 112 return err 113 } 114 m.DecisionPolicy = any 115 return nil 116 } 117 118 // GetDecisionPolicy gets the decision policy of MsgUpdateGroupPolicyDecisionPolicy. 119 func (m *MsgUpdateGroupPolicyDecisionPolicy) GetDecisionPolicy() (DecisionPolicy, error) { 120 decisionPolicy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy) 121 if !ok { 122 return nil, sdkerrors.ErrInvalidType.Wrapf("expected %T, got %T", (DecisionPolicy)(nil), m.DecisionPolicy.GetCachedValue()) 123 } 124 125 return decisionPolicy, nil 126 } 127 128 // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces 129 func (m MsgUpdateGroupPolicyDecisionPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error { 130 var decisionPolicy DecisionPolicy 131 return unpacker.UnpackAny(m.DecisionPolicy, &decisionPolicy) 132 } 133 134 // NewMsgCreateGroupPolicy creates a new MsgCreateGroupPolicy. 135 func NewMsgCreateGroupPolicy(admin sdk.AccAddress, group uint64, metadata string, decisionPolicy DecisionPolicy) (*MsgCreateGroupPolicy, error) { 136 m := &MsgCreateGroupPolicy{ 137 Admin: admin.String(), 138 GroupId: group, 139 Metadata: metadata, 140 } 141 err := m.SetDecisionPolicy(decisionPolicy) 142 if err != nil { 143 return nil, err 144 } 145 return m, nil 146 } 147 148 // GetAdmin gets the admin of MsgCreateGroupPolicy. 149 func (m *MsgCreateGroupPolicy) GetAdmin() string { 150 return m.Admin 151 } 152 153 // GetGroupID gets the group id of MsgCreateGroupPolicy. 154 func (m *MsgCreateGroupPolicy) GetGroupID() uint64 { 155 return m.GroupId 156 } 157 158 // GetMetadata gets the metadata of MsgCreateGroupPolicy. 159 func (m *MsgCreateGroupPolicy) GetMetadata() string { 160 return m.Metadata 161 } 162 163 // GetDecisionPolicy gets the decision policy of MsgCreateGroupPolicy. 164 func (m *MsgCreateGroupPolicy) GetDecisionPolicy() (DecisionPolicy, error) { 165 decisionPolicy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy) 166 if !ok { 167 return nil, sdkerrors.ErrInvalidType.Wrapf("expected %T, got %T", (DecisionPolicy)(nil), m.DecisionPolicy.GetCachedValue()) 168 } 169 return decisionPolicy, nil 170 } 171 172 // SetDecisionPolicy sets the decision policy of MsgCreateGroupPolicy. 173 func (m *MsgCreateGroupPolicy) SetDecisionPolicy(decisionPolicy DecisionPolicy) error { 174 any, err := types.NewAnyWithValue(decisionPolicy) 175 if err != nil { 176 return err 177 } 178 m.DecisionPolicy = any 179 return nil 180 } 181 182 // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces 183 func (m MsgCreateGroupPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error { 184 var decisionPolicy DecisionPolicy 185 return unpacker.UnpackAny(m.DecisionPolicy, &decisionPolicy) 186 } 187 188 // NewMsgSubmitProposal creates a new MsgSubmitProposal. 189 func NewMsgSubmitProposal(address string, proposers []string, msgs []sdk.Msg, metadata string, exec Exec, title, summary string) (*MsgSubmitProposal, error) { 190 m := &MsgSubmitProposal{ 191 GroupPolicyAddress: address, 192 Proposers: proposers, 193 Metadata: metadata, 194 Exec: exec, 195 Title: title, 196 Summary: summary, 197 } 198 err := m.SetMsgs(msgs) 199 if err != nil { 200 return nil, err 201 } 202 return m, nil 203 } 204 205 // SetMsgs packs msgs into Any's 206 func (m *MsgSubmitProposal) SetMsgs(msgs []sdk.Msg) error { 207 anys, err := tx.SetMsgs(msgs) 208 if err != nil { 209 return err 210 } 211 m.Messages = anys 212 return nil 213 } 214 215 // GetMsgs unpacks m.Messages Any's into sdk.Msg's 216 func (m MsgSubmitProposal) GetMsgs() ([]sdk.Msg, error) { 217 return tx.GetMsgs(m.Messages, "proposal") 218 } 219 220 // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces 221 func (m MsgSubmitProposal) UnpackInterfaces(unpacker types.AnyUnpacker) error { 222 return tx.UnpackInterfaces(unpacker, m.Messages) 223 }