github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/ibc-go/modules/apps/transfer/handler.go (about)

     1  package transfer
     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  
    10  	"github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/transfer/keeper"
    11  	"github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/transfer/types"
    12  )
    13  
    14  // NewHandler returns sdk.Handler for IBC token transfer module messages
    15  func NewHandler(k keeper.Keeper) sdk.Handler {
    16  	return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) {
    17  		if !tmtypes.HigherThanVenus1(ctx.BlockHeight()) {
    18  			errMsg := fmt.Sprintf("ibc transfer is not supported at height %d", ctx.BlockHeight())
    19  			return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg)
    20  		}
    21  
    22  		ctx.SetEventManager(sdk.NewEventManager())
    23  
    24  		switch msg := msg.(type) {
    25  		case *types.MsgTransfer:
    26  			res, err := k.Transfer(sdk.WrapSDKContext(ctx), msg)
    27  			return sdk.WrapServiceResult(ctx, res, err)
    28  
    29  		default:
    30  			return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized ICS-20 transfer message type: %T", msg)
    31  		}
    32  	}
    33  }