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  }