github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/icamauth/handler.go (about)

     1  package icamauth
     2  
     3  import (
     4  	"fmt"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  	sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors"
     8  	tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types"
     9  	"github.com/fibonacci-chain/fbc/x/icamauth/types"
    10  )
    11  
    12  // NewHandler returns sdk.Handler for IBC token transfer module messages
    13  func NewHandler(k types.MsgServer) sdk.Handler {
    14  	return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) {
    15  		if !tmtypes.HigherThanVenus4(ctx.BlockHeight()) {
    16  			errMsg := fmt.Sprintf("icamauth  is not supported at height %d", ctx.BlockHeight())
    17  			return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg)
    18  		}
    19  
    20  		ctx.SetEventManager(sdk.NewEventManager())
    21  
    22  		switch msg := msg.(type) {
    23  		case *types.MsgSubmitTx:
    24  			res, err := k.SubmitTx(sdk.WrapSDKContext(ctx), msg)
    25  			return sdk.WrapServiceResult(ctx, res, err)
    26  		case *types.MsgRegisterAccount:
    27  			res, err := k.RegisterAccount(sdk.WrapSDKContext(ctx), msg)
    28  			return sdk.WrapServiceResult(ctx, res, err)
    29  
    30  		default:
    31  			return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized ICS-20 transfer message type: %T", msg)
    32  		}
    33  	}
    34  }