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 }