github.com/KiraCore/sekai@v0.3.43/x/basket/keeper/msg_server.go (about) 1 package keeper 2 3 import ( 4 "context" 5 6 "github.com/KiraCore/sekai/x/basket/types" 7 govtypes "github.com/KiraCore/sekai/x/gov/types" 8 sdk "github.com/cosmos/cosmos-sdk/types" 9 sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" 10 ) 11 12 type msgServer struct { 13 keeper Keeper 14 cgk types.CustomGovKeeper 15 } 16 17 // NewMsgServerImpl returns an implementation of the bank MsgServer interface 18 // for the provided Keeper. 19 func NewMsgServerImpl(keeper Keeper, cgk types.CustomGovKeeper) types.MsgServer { 20 return &msgServer{ 21 keeper: keeper, 22 cgk: cgk, 23 } 24 } 25 26 var _ types.MsgServer = msgServer{} 27 28 func (k msgServer) DisableBasketDeposits( 29 goCtx context.Context, 30 msg *types.MsgDisableBasketDeposits, 31 ) (*types.MsgDisableBasketDepositsResponse, error) { 32 ctx := sdk.UnwrapSDKContext(goCtx) 33 basket, err := k.keeper.GetBasketById(ctx, msg.BasketId) 34 if err != nil { 35 return nil, err 36 } 37 38 sender, err := sdk.AccAddressFromBech32(msg.Sender) 39 isAllowed := k.keeper.CheckIfAllowedPermission(ctx, sender, govtypes.PermHandleBasketEmergency) 40 if !isAllowed { 41 return nil, sdkerrors.Wrap(govtypes.ErrNotEnoughPermissions, "PermHandleBasketEmergency") 42 } 43 44 basket.MintsDisabled = true 45 k.keeper.SetBasket(ctx, basket) 46 return &types.MsgDisableBasketDepositsResponse{}, nil 47 } 48 49 func (k msgServer) DisableBasketWithdraws( 50 goCtx context.Context, 51 msg *types.MsgDisableBasketWithdraws, 52 ) (*types.MsgDisableBasketWithdrawsResponse, error) { 53 ctx := sdk.UnwrapSDKContext(goCtx) 54 basket, err := k.keeper.GetBasketById(ctx, msg.BasketId) 55 if err != nil { 56 return nil, err 57 } 58 59 sender, err := sdk.AccAddressFromBech32(msg.Sender) 60 isAllowed := k.keeper.CheckIfAllowedPermission(ctx, sender, govtypes.PermHandleBasketEmergency) 61 if !isAllowed { 62 return nil, sdkerrors.Wrap(govtypes.ErrNotEnoughPermissions, "PermHandleBasketEmergency") 63 } 64 65 basket.BurnsDisabled = true 66 k.keeper.SetBasket(ctx, basket) 67 return &types.MsgDisableBasketWithdrawsResponse{}, nil 68 } 69 70 func (k msgServer) DisableBasketSwaps( 71 goCtx context.Context, 72 msg *types.MsgDisableBasketSwaps, 73 ) (*types.MsgDisableBasketSwapsResponse, error) { 74 ctx := sdk.UnwrapSDKContext(goCtx) 75 basket, err := k.keeper.GetBasketById(ctx, msg.BasketId) 76 if err != nil { 77 return nil, err 78 } 79 80 sender, err := sdk.AccAddressFromBech32(msg.Sender) 81 isAllowed := k.keeper.CheckIfAllowedPermission(ctx, sender, govtypes.PermHandleBasketEmergency) 82 if !isAllowed { 83 return nil, sdkerrors.Wrap(govtypes.ErrNotEnoughPermissions, "PermHandleBasketEmergency") 84 } 85 86 basket.SwapsDisabled = true 87 k.keeper.SetBasket(ctx, basket) 88 return &types.MsgDisableBasketSwapsResponse{}, nil 89 } 90 91 func (k msgServer) BasketTokenMint( 92 goCtx context.Context, 93 msg *types.MsgBasketTokenMint, 94 ) (*types.MsgBasketTokenMintResponse, error) { 95 ctx := sdk.UnwrapSDKContext(goCtx) 96 err := k.keeper.MintBasketToken(ctx, msg) 97 if err != nil { 98 return nil, err 99 } 100 return &types.MsgBasketTokenMintResponse{}, nil 101 } 102 103 func (k msgServer) BasketTokenBurn( 104 goCtx context.Context, 105 msg *types.MsgBasketTokenBurn, 106 ) (*types.MsgBasketTokenBurnResponse, error) { 107 ctx := sdk.UnwrapSDKContext(goCtx) 108 err := k.keeper.BurnBasketToken(ctx, msg) 109 if err != nil { 110 return nil, err 111 } 112 return &types.MsgBasketTokenBurnResponse{}, nil 113 } 114 115 func (k msgServer) BasketTokenSwap( 116 goCtx context.Context, 117 msg *types.MsgBasketTokenSwap, 118 ) (*types.MsgBasketTokenSwapResponse, error) { 119 ctx := sdk.UnwrapSDKContext(goCtx) 120 err := k.keeper.BasketSwap(ctx, msg) 121 if err != nil { 122 return nil, err 123 } 124 return &types.MsgBasketTokenSwapResponse{}, nil 125 } 126 127 func (k msgServer) BasketClaimRewards( 128 goCtx context.Context, 129 msg *types.MsgBasketClaimRewards, 130 ) (*types.MsgBasketClaimRewardsResponse, error) { 131 ctx := sdk.UnwrapSDKContext(goCtx) 132 133 k.keeper.RegisterBasketModuleAsDelegator(ctx) 134 return &types.MsgBasketClaimRewardsResponse{}, nil 135 }