@@ -4,12 +4,13 @@ import (
4
4
"fmt"
5
5
6
6
sdk "github.com/cosmos/cosmos-sdk/types"
7
+ "github.com/cosmos/cosmos-sdk/x/bank"
7
8
"github.com/cosmos/cosmos-sdk/x/distribution/keeper"
8
9
"github.com/cosmos/cosmos-sdk/x/distribution/types"
9
10
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
10
11
)
11
12
12
- func NewHandler (k keeper.Keeper ) sdk.Handler {
13
+ func NewHandler (k keeper.Keeper , bankKeeper bank. Keeper ) sdk.Handler {
13
14
return func (ctx sdk.Context , msg sdk.Msg ) sdk.Result {
14
15
ctx = ctx .WithEventManager (sdk .NewEventManager ())
15
16
@@ -23,6 +24,9 @@ func NewHandler(k keeper.Keeper) sdk.Handler {
23
24
case types.MsgWithdrawValidatorCommission :
24
25
return handleMsgWithdrawValidatorCommission (ctx , msg , k )
25
26
27
+ case types.MsgDepositIntoCommunityPool :
28
+ return handleMsgDepositIntoCommunityPool (ctx , msg , k , bankKeeper )
29
+
26
30
default :
27
31
errMsg := fmt .Sprintf ("unrecognized distribution message type: %T" , msg )
28
32
return sdk .ErrUnknownRequest (errMsg ).Result ()
@@ -83,6 +87,26 @@ func handleMsgWithdrawValidatorCommission(ctx sdk.Context, msg types.MsgWithdraw
83
87
return sdk.Result {Events : ctx .EventManager ().Events ()}
84
88
}
85
89
90
+ func handleMsgDepositIntoCommunityPool (ctx sdk.Context , msg types.MsgDepositIntoCommunityPool , k keeper.Keeper , bankK bank.Keeper ) sdk.Result {
91
+ if _ , err := bankK .SubtractCoins (ctx , msg .Depositor , msg .Amount ); err != nil {
92
+ return err .Result ()
93
+ }
94
+
95
+ pool := k .GetFeePool (ctx )
96
+ pool .CommunityPool = pool .CommunityPool .Add (sdk .NewDecCoins (msg .Amount ))
97
+ k .SetFeePool (ctx , pool )
98
+
99
+ ctx .EventManager ().EmitEvent (
100
+ sdk .NewEvent (
101
+ sdk .EventTypeMessage ,
102
+ sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
103
+ sdk .NewAttribute (sdk .AttributeKeySender , msg .Depositor .String ()),
104
+ ),
105
+ )
106
+
107
+ return sdk.Result {Events : ctx .EventManager ().Events ()}
108
+ }
109
+
86
110
func NewCommunityPoolSpendProposalHandler (k Keeper ) govtypes.Handler {
87
111
return func (ctx sdk.Context , content govtypes.Content ) sdk.Error {
88
112
switch c := content .(type ) {
0 commit comments