/
msg_server.go
97 lines (79 loc) · 3.08 KB
/
msg_server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package keeper
import (
"context"
"fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
lockuptypes "github.com/osmosis-labs/osmosis/v7/x/lockup/types"
"github.com/osmosis-labs/osmosis/v7/x/superfluid/types"
)
type msgServer struct {
keeper *Keeper
}
// NewMsgServerImpl returns an instance of MsgServer
func NewMsgServerImpl(keeper *Keeper) types.MsgServer {
return &msgServer{
keeper: keeper,
}
}
var _ types.MsgServer = msgServer{}
func (server msgServer) SuperfluidDelegate(goCtx context.Context, msg *types.MsgSuperfluidDelegate) (*types.MsgSuperfluidDelegateResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
err := server.keeper.SuperfluidDelegate(ctx, msg.Sender, msg.LockId, msg.ValAddr)
if err != nil {
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.TypeEvtSuperfluidDelegate,
sdk.NewAttribute(types.AttributeLockId, fmt.Sprintf("%d", msg.LockId)),
sdk.NewAttribute(types.AttributeValidator, msg.ValAddr),
))
}
return &types.MsgSuperfluidDelegateResponse{}, err
}
func (server msgServer) SuperfluidUndelegate(goCtx context.Context, msg *types.MsgSuperfluidUndelegate) (*types.MsgSuperfluidUndelegateResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
err := server.keeper.SuperfluidUndelegate(ctx, msg.Sender, msg.LockId)
if err != nil {
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.TypeEvtSuperfluidUndelegate,
sdk.NewAttribute(types.AttributeLockId, fmt.Sprintf("%d", msg.LockId)),
))
}
return &types.MsgSuperfluidUndelegateResponse{}, err
}
// func (server msgServer) SuperfluidRedelegate(goCtx context.Context, msg *types.MsgSuperfluidRedelegate) (*types.MsgSuperfluidRedelegateResponse, error) {
// ctx := sdk.UnwrapSDKContext(goCtx)
// err := server.keeper.SuperfluidRedelegate(ctx, msg.Sender, msg.LockId, msg.NewValAddr)
// return &types.MsgSuperfluidRedelegateResponse{}, err
// }
func (server msgServer) SuperfluidUnbondLock(goCtx context.Context, msg *types.MsgSuperfluidUnbondLock) (
*types.MsgSuperfluidUnbondLockResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
err := server.keeper.SuperfluidUnbondLock(ctx, msg.LockId, msg.Sender)
if err != nil {
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.TypeEvtSuperfluidUnbondLock,
sdk.NewAttribute(types.AttributeLockId, fmt.Sprintf("%d", msg.LockId)),
))
}
return &types.MsgSuperfluidUnbondLockResponse{}, err
}
func (server msgServer) LockAndSuperfluidDelegate(goCtx context.Context, msg *types.MsgLockAndSuperfluidDelegate) (*types.MsgLockAndSuperfluidDelegateResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
lockupMsg := lockuptypes.MsgLockTokens{
Owner: msg.Sender,
Duration: server.keeper.sk.GetParams(ctx).UnbondingTime,
Coins: msg.Coins,
}
lockupRes, err := server.keeper.lms.LockTokens(goCtx, &lockupMsg)
if err != nil {
return &types.MsgLockAndSuperfluidDelegateResponse{}, err
}
superfluidDelegateMsg := types.MsgSuperfluidDelegate{
Sender: msg.Sender,
LockId: lockupRes.GetID(),
ValAddr: msg.ValAddr,
}
_, err = server.SuperfluidDelegate(goCtx, &superfluidDelegateMsg)
return &types.MsgLockAndSuperfluidDelegateResponse{
ID: lockupRes.ID,
}, err
}