github.com/lino-network/lino@v0.6.11/x/vote/handler.go (about) 1 package vote 2 3 import ( 4 "fmt" 5 "reflect" 6 7 linotypes "github.com/lino-network/lino/types" 8 "github.com/lino-network/lino/x/vote/types" 9 10 sdk "github.com/cosmos/cosmos-sdk/types" 11 ) 12 13 // NewHandler - Handle all "vote" type messages. 14 func NewHandler(vk VoteKeeper) sdk.Handler { 15 return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { 16 switch msg := msg.(type) { 17 case types.StakeInMsg: 18 return handleStakeInMsg(ctx, vk, msg) 19 case types.StakeOutMsg: 20 return handleStakeOutMsg(ctx, vk, msg) 21 case types.ClaimInterestMsg: 22 return handleClaimInterestMsg(ctx, vk, msg) 23 case types.StakeInForMsg: 24 return handleStakeInForMsg(ctx, vk, msg) 25 default: 26 errMsg := fmt.Sprintf("Unrecognized vote msg type: %v", reflect.TypeOf(msg).Name()) 27 return sdk.ErrUnknownRequest(errMsg).Result() 28 } 29 } 30 } 31 32 func handleStakeInMsg(ctx sdk.Context, vk VoteKeeper, msg types.StakeInMsg) sdk.Result { 33 coin, err := linotypes.LinoToCoin(msg.Deposit) 34 if err != nil { 35 return err.Result() 36 } 37 38 if err := vk.StakeIn(ctx, msg.Username, coin); err != nil { 39 return err.Result() 40 } 41 42 return sdk.Result{} 43 } 44 45 func handleStakeInForMsg(ctx sdk.Context, vk VoteKeeper, msg types.StakeInForMsg) sdk.Result { 46 coin, err := linotypes.LinoToCoin(msg.Deposit) 47 if err != nil { 48 return err.Result() 49 } 50 51 if err := vk.StakeInFor(ctx, msg.Sender, msg.Receiver, coin); err != nil { 52 return err.Result() 53 } 54 55 return sdk.Result{} 56 } 57 58 func handleStakeOutMsg(ctx sdk.Context, vk VoteKeeper, msg types.StakeOutMsg) sdk.Result { 59 coin, err := linotypes.LinoToCoin(msg.Amount) 60 if err != nil { 61 return err.Result() 62 } 63 if err := vk.StakeOut(ctx, msg.Username, coin); err != nil { 64 return err.Result() 65 } 66 return sdk.Result{} 67 } 68 69 func handleClaimInterestMsg(ctx sdk.Context, vk VoteKeeper, msg types.ClaimInterestMsg) sdk.Result { 70 if err := vk.ClaimInterest(ctx, msg.Username); err != nil { 71 return err.Result() 72 } 73 return sdk.Result{} 74 }