Skip to content

Commit 3fc6e97

Browse files
Fix: parsing hyperlane amount (#422)
* Fix: parsing hyperlane amount * Fix: linter
1 parent c446b32 commit 3fc6e97

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

pkg/indexer/decode/event.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -606,10 +606,14 @@ func NewHyperlaneReceiveTransferEvent(m map[string]any) (hrte HyperlaneReceiveTr
606606
if err != nil {
607607
return hrte, errors.Wrap(err, "origin")
608608
}
609-
coin, err := decoder.CoinFromMap(m, "amount")
609+
amount, err := parseUnquoteOptional(decoder.StringFromMap(m, "amount"))
610610
if err != nil {
611611
return hrte, errors.Wrap(err, "amount")
612612
}
613+
coin, err := types.ParseCoinNormalized(amount)
614+
if err != nil {
615+
return hrte, errors.Wrap(err, amount)
616+
}
613617
hrte.Amount = decimal.RequireFromString(coin.Amount.String())
614618
hrte.Denom = coin.GetDenom()
615619
return
@@ -641,10 +645,14 @@ func NewHyperlaneSendTransferEvent(m map[string]any) (hste HyperlaneSendTransfer
641645
if err != nil {
642646
return hste, errors.Wrap(err, "origin")
643647
}
644-
coin, err := decoder.CoinFromMap(m, "amount")
648+
amount, err := parseUnquoteOptional(decoder.StringFromMap(m, "amount"))
645649
if err != nil {
646650
return hste, errors.Wrap(err, "amount")
647651
}
652+
coin, err := types.ParseCoinNormalized(amount)
653+
if err != nil {
654+
return hste, errors.Wrap(err, amount)
655+
}
648656
hste.Amount = decimal.RequireFromString(coin.Amount.String())
649657
hste.Denom = coin.GetDenom()
650658
return

pkg/indexer/decode/event_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,3 +546,38 @@ func TestNewRecvPacket(t *testing.T) {
546546
})
547547
}
548548
}
549+
550+
func TestNewHyperlaneSendTransferEvent(t *testing.T) {
551+
tests := []struct {
552+
name string
553+
m map[string]any
554+
wantBody HyperlaneSendTransferEvent
555+
}{
556+
{
557+
name: "test 1",
558+
m: map[string]any{
559+
"amount": "\"10utia\"",
560+
"destination_domain": "812",
561+
"recipient": "\"0x0000000000000000000000009b8ae55dccca7a842182cc023bd63d24d2692e0a\"",
562+
"sender": "\"celestia1zvdlcmplx4gdh4hajwlsegnn2xzzfy470gjw4c\"",
563+
"token_id": "\"0x726f757465725f61707000000000000000000000000000010000000000000000\"",
564+
"msg_index": "0",
565+
},
566+
wantBody: HyperlaneSendTransferEvent{
567+
Amount: decimal.RequireFromString("10"),
568+
Denom: "utia",
569+
DestinationDomain: 812,
570+
Recipient: "0x0000000000000000000000009b8ae55dccca7a842182cc023bd63d24d2692e0a",
571+
Sender: "celestia1zvdlcmplx4gdh4hajwlsegnn2xzzfy470gjw4c",
572+
TokenId: "0x726f757465725f61707000000000000000000000000000010000000000000000",
573+
},
574+
},
575+
}
576+
for _, tt := range tests {
577+
t.Run(tt.name, func(t *testing.T) {
578+
gotBody, err := NewHyperlaneSendTransferEvent(tt.m)
579+
require.NoError(t, err)
580+
require.Equal(t, tt.wantBody, gotBody)
581+
})
582+
}
583+
}

0 commit comments

Comments
 (0)