Skip to content

Commit

Permalink
chore: add transfer fail hook
Browse files Browse the repository at this point in the history
  • Loading branch information
ellie4x committed Oct 25, 2022
1 parent 271c91a commit fea7d73
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
8 changes: 6 additions & 2 deletions modules/apps/transfer/ibc_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,11 +223,12 @@ func (im IBCModule) OnAcknowledgementPacket(
if err := im.keeper.OnAcknowledgementPacket(ctx, packet, data, ack); err != nil {
return err
}

denom := types.ParseDenomTrace(data.Denom)
// AfterTransferEnd
if ack.Success() {
denom := types.ParseDenomTrace(data.Denom)
im.keeper.AfterTransferEnd(ctx, data, denom.BaseDenom)
} else {
im.keeper.AfterTransferFail(ctx, data, denom.BaseDenom)
}

ctx.EventManager().EmitEvent(
Expand Down Expand Up @@ -276,6 +277,9 @@ func (im IBCModule) OnTimeoutPacket(
if err := im.keeper.OnTimeoutPacket(ctx, packet, data); err != nil {
return err
}

denom := types.ParseDenomTrace(data.Denom)
im.keeper.AfterTransferFail(ctx, data, denom.BaseDenom)

ctx.EventManager().EmitEvent(
sdk.NewEvent(
Expand Down
4 changes: 4 additions & 0 deletions modules/apps/transfer/keeper/hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ func (k Keeper) AfterTransferEnd(ctx sdk.Context, packet types.FungibleTokenPack
k.hooks.AfterTransferEnd(ctx, packet, base_denom)
}

func (k Keeper) AfterTransferFail(ctx sdk.Context, packet types.FungibleTokenPacketData, base_denom string) {
k.hooks.AfterTransferFail(ctx, packet, base_denom)
}

// AfterOnRecvPacket executes the indicated hook after OnRecvPacket ends
func (k Keeper) AfterOnRecvPacket(ctx sdk.Context, packet types.FungibleTokenPacketData) {
k.hooks.AfterOnRecvPacket(ctx, packet)
Expand Down
7 changes: 7 additions & 0 deletions modules/apps/transfer/types/hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

type TransferHooks interface {
AfterTransferEnd(ctx sdk.Context, data FungibleTokenPacketData, base_denom string)
AfterTransferFail(ctx sdk.Context, data FungibleTokenPacketData, base_denom string)
AfterOnRecvPacket(ctx sdk.Context, data FungibleTokenPacketData)
}

Expand All @@ -23,6 +24,12 @@ func (h MultiTransferHooks) AfterTransferEnd(ctx sdk.Context, data FungibleToken
}
}

func (h MultiTransferHooks) AfterTransferFail(ctx sdk.Context, data FungibleTokenPacketData, base_denom string) {
for i := range h {
h[i].AfterTransferFail(ctx, data, base_denom)
}
}

func (h MultiTransferHooks) AfterOnRecvPacket(ctx sdk.Context, data FungibleTokenPacketData) {
for i := range h {
h[i].AfterOnRecvPacket(ctx, data)
Expand Down

0 comments on commit fea7d73

Please sign in to comment.