github.com/Finschia/finschia-sdk@v0.49.1/x/stakingplus/keeper/msg_server.go (about)

     1  package keeper
     2  
     3  import (
     4  	"context"
     5  
     6  	sdk "github.com/Finschia/finschia-sdk/types"
     7  	"github.com/Finschia/finschia-sdk/types/errors"
     8  	stakingkeeper "github.com/Finschia/finschia-sdk/x/staking/keeper"
     9  	stakingtypes "github.com/Finschia/finschia-sdk/x/staking/types"
    10  	"github.com/Finschia/finschia-sdk/x/stakingplus"
    11  )
    12  
    13  type msgServer struct {
    14  	stakingtypes.MsgServer
    15  
    16  	fk stakingplus.FoundationKeeper
    17  }
    18  
    19  // NewMsgServerImpl returns an implementation of the staking MsgServer interface
    20  // for the provided Keeper.
    21  func NewMsgServerImpl(keeper stakingkeeper.Keeper, fk stakingplus.FoundationKeeper) stakingtypes.MsgServer {
    22  	return &msgServer{
    23  		MsgServer: stakingkeeper.NewMsgServerImpl(keeper),
    24  		fk:        fk,
    25  	}
    26  }
    27  
    28  var _ stakingtypes.MsgServer = msgServer{}
    29  
    30  func (k msgServer) CreateValidator(goCtx context.Context, msg *stakingtypes.MsgCreateValidator) (*stakingtypes.MsgCreateValidatorResponse, error) {
    31  	ctx := sdk.UnwrapSDKContext(goCtx)
    32  
    33  	grantee, err := sdk.AccAddressFromBech32(msg.DelegatorAddress)
    34  	if err != nil {
    35  		return nil, errors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", msg.DelegatorAddress)
    36  	}
    37  
    38  	if err := k.fk.Accept(ctx, grantee, msg); err != nil {
    39  		return nil, err
    40  	}
    41  
    42  	return k.MsgServer.CreateValidator(goCtx, msg)
    43  }