github.com/KiraCore/sekai@v0.3.43/x/tokens/keeper/msg_server.go (about) 1 package keeper 2 3 import ( 4 "context" 5 "fmt" 6 "strings" 7 8 sdk "github.com/cosmos/cosmos-sdk/types" 9 "github.com/cosmos/cosmos-sdk/types/errors" 10 11 govtypes "github.com/KiraCore/sekai/x/gov/types" 12 "github.com/KiraCore/sekai/x/tokens/types" 13 sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" 14 ) 15 16 type msgServer struct { 17 keeper Keeper 18 cgk types.CustomGovKeeper 19 } 20 21 // NewMsgServerImpl returns an implementation of the bank MsgServer interface 22 // for the provided Keeper. 23 func NewMsgServerImpl(keeper Keeper, cgk types.CustomGovKeeper) types.MsgServer { 24 return &msgServer{ 25 keeper: keeper, 26 cgk: cgk, 27 } 28 } 29 30 var _ types.MsgServer = msgServer{} 31 32 func (k msgServer) UpsertTokenAlias( 33 goCtx context.Context, 34 msg *types.MsgUpsertTokenAlias, 35 ) (*types.MsgUpsertTokenAliasResponse, error) { 36 ctx := sdk.UnwrapSDKContext(goCtx) 37 38 isAllowed := k.cgk.CheckIfAllowedPermission(ctx, msg.Proposer, govtypes.PermUpsertTokenAlias) 39 if !isAllowed { 40 return nil, errors.Wrap(govtypes.ErrNotEnoughPermissions, govtypes.PermUpsertTokenAlias.String()) 41 } 42 43 err := k.keeper.UpsertTokenAlias(ctx, *types.NewTokenAlias( 44 msg.Symbol, 45 msg.Name, 46 msg.Icon, 47 msg.Decimals, 48 msg.Denoms, 49 msg.Invalidated, 50 )) 51 ctx.EventManager().EmitEvent( 52 sdk.NewEvent( 53 types.EventTypeUpsertTokenAlias, 54 sdk.NewAttribute(types.AttributeKeyProposer, msg.Proposer.String()), 55 sdk.NewAttribute(types.AttributeKeySymbol, msg.Symbol), 56 sdk.NewAttribute(types.AttributeKeyName, msg.Name), 57 sdk.NewAttribute(types.AttributeKeyIcon, msg.Icon), 58 sdk.NewAttribute(types.AttributeKeyDecimals, fmt.Sprintf("%d", msg.Decimals)), 59 sdk.NewAttribute(types.AttributeKeyDenoms, strings.Join(msg.Denoms, ",")), 60 ), 61 ) 62 return &types.MsgUpsertTokenAliasResponse{}, err 63 } 64 65 func (k msgServer) UpsertTokenRate(goCtx context.Context, msg *types.MsgUpsertTokenRate) (*types.MsgUpsertTokenRateResponse, error) { 66 ctx := sdk.UnwrapSDKContext(goCtx) 67 68 err := msg.ValidateBasic() 69 if err != nil { 70 return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, err.Error()) 71 } 72 73 isAllowed := k.cgk.CheckIfAllowedPermission(ctx, msg.Proposer, govtypes.PermUpsertTokenRate) 74 if !isAllowed { 75 return nil, errors.Wrap(govtypes.ErrNotEnoughPermissions, govtypes.PermUpsertTokenRate.String()) 76 } 77 78 err = k.keeper.UpsertTokenRate(ctx, *types.NewTokenRate( 79 msg.Denom, 80 msg.Rate, 81 msg.FeePayments, 82 msg.StakeCap, 83 msg.StakeMin, 84 msg.StakeToken, 85 msg.Invalidated, 86 )) 87 88 if err != nil { 89 return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, err.Error()) 90 } 91 ctx.EventManager().EmitEvent( 92 sdk.NewEvent( 93 types.EventTypeUpsertTokenRate, 94 sdk.NewAttribute(types.AttributeKeyProposer, msg.Proposer.String()), 95 sdk.NewAttribute(types.AttributeKeyDenom, msg.Denom), 96 sdk.NewAttribute(types.AttributeKeyRate, msg.Rate.String()), 97 sdk.NewAttribute(types.AttributeKeyFeePayments, fmt.Sprintf("%t", msg.FeePayments)), 98 ), 99 ) 100 101 return &types.MsgUpsertTokenRateResponse{}, nil 102 }