diff --git a/x/dao/keeper/msg_server_reissue_rddl_result.go b/x/dao/keeper/msg_server_reissue_rddl_result.go index f619f53..caf801f 100644 --- a/x/dao/keeper/msg_server_reissue_rddl_result.go +++ b/x/dao/keeper/msg_server_reissue_rddl_result.go @@ -3,6 +3,7 @@ package keeper import ( "context" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/planetmint/planetmint-go/x/dao/types" ) @@ -10,8 +11,21 @@ import ( func (k msgServer) ReissueRDDLResult(goCtx context.Context, msg *types.MsgReissueRDDLResult) (*types.MsgReissueRDDLResultResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - // TODO: Handling the message - _ = ctx + reissuance, found := k.GetReissuance(ctx, msg.GetBlockHeight()) + if found != true { + return nil, errorsmod.Wrapf(types.ErrReissuanceNotFound, " for provided block height %u", msg.GetBlockHeight()) + } + if reissuance.GetBlockHeight() != msg.GetBlockHeight() { + return nil, errorsmod.Wrapf(types.ErrWrongBlockHeight, " for provided block height %u", msg.GetBlockHeight()) + } + if reissuance.GetProposer() != msg.GetProposer() { + return nil, errorsmod.Wrapf(types.ErrInvalidProposer, " for provided block height %u", msg.GetBlockHeight()) + } + if reissuance.GetTxId() != "" { + return nil, errorsmod.Wrapf(types.ErrTXAlreadySet, " for provided block height %u", msg.GetBlockHeight()) + } + reissuance.TxId = msg.GetTxId() + k.StoreReissuance(ctx, reissuance) return &types.MsgReissueRDDLResultResponse{}, nil } diff --git a/x/dao/types/errors.go b/x/dao/types/errors.go index 41807f4..68f2059 100644 --- a/x/dao/types/errors.go +++ b/x/dao/types/errors.go @@ -13,4 +13,8 @@ var ( ErrTransferFailed = errorsmod.Register(ModuleName, 4, "transfer failed") ErrInvalidAddress = errorsmod.Register(ModuleName, 5, "invalid address") ErrAlreadyMinted = errorsmod.Register(ModuleName, 6, "already minted") + ErrWrongBlockHeight = errorsmod.Register(ModuleName, 7, "wrong block height") + ErrReissuanceNotFound = errorsmod.Register(ModuleName, 8, "reissuance not found") + ErrInvalidProposer = errorsmod.Register(ModuleName, 9, "invalid proposer") + ErrTXAlreadySet = errorsmod.Register(ModuleName, 10, "tx already set") )