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

     1  package evidence
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  	sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors"
     6  )
     7  
     8  func NewHandler(k Keeper) sdk.Handler {
     9  	return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) {
    10  		ctx.SetEventManager(sdk.NewEventManager())
    11  
    12  		switch msg := msg.(type) {
    13  		case MsgSubmitEvidence:
    14  			return handleMsgSubmitEvidence(ctx, k, msg)
    15  
    16  		default:
    17  			return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", ModuleName, msg)
    18  		}
    19  	}
    20  }
    21  
    22  func handleMsgSubmitEvidence(ctx sdk.Context, k Keeper, msg MsgSubmitEvidence) (*sdk.Result, error) {
    23  	if err := k.SubmitEvidence(ctx, msg.Evidence); err != nil {
    24  		return nil, err
    25  	}
    26  
    27  	ctx.EventManager().EmitEvent(
    28  		sdk.NewEvent(
    29  			sdk.EventTypeMessage,
    30  			sdk.NewAttribute(sdk.AttributeKeyModule, AttributeValueCategory),
    31  			sdk.NewAttribute(sdk.AttributeKeySender, msg.Submitter.String()),
    32  		),
    33  	)
    34  
    35  	return &sdk.Result{
    36  		Data:   msg.Evidence.Hash(),
    37  		Events: ctx.EventManager().Events(),
    38  	}, nil
    39  }