From c0d1f11ac2d01b09a5ad30b72ba46bf5d7dc30ef Mon Sep 17 00:00:00 2001 From: Cuteivist Date: Mon, 26 Aug 2024 09:53:21 +0200 Subject: [PATCH] fix_: Fill chain ids for bridge (#5751) --- .../transfer/transaction_manager_multitransaction.go | 11 +++++++++-- .../transaction_manager_multitransaction_test.go | 9 ++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/services/wallet/transfer/transaction_manager_multitransaction.go b/services/wallet/transfer/transaction_manager_multitransaction.go index e4e6781a5..f2685bd36 100644 --- a/services/wallet/transfer/transaction_manager_multitransaction.go +++ b/services/wallet/transfer/transaction_manager_multitransaction.go @@ -39,14 +39,21 @@ func (tm *TransactionManager) CreateMultiTransactionFromCommand(command *MultiTr multiTransaction := multiTransactionFromCommand(command) - // Set network for single chain transactions + // Extract network from args switch multiTransaction.Type { case MultiTransactionSend, MultiTransactionApprove, MultiTransactionSwap: if multiTransaction.FromNetworkID == wallet_common.UnknownChainID && len(data) == 1 { multiTransaction.FromNetworkID = data[0].ChainID } case MultiTransactionBridge: - break + if len(data) == 1 && data[0].HopTx != nil { + if multiTransaction.FromNetworkID == wallet_common.UnknownChainID { + multiTransaction.FromNetworkID = data[0].HopTx.ChainID + } + if multiTransaction.ToNetworkID == wallet_common.UnknownChainID { + multiTransaction.ToNetworkID = data[0].HopTx.ChainIDTo + } + } default: return nil, fmt.Errorf("unsupported multi transaction type: %v", multiTransaction.Type) } diff --git a/services/wallet/transfer/transaction_manager_multitransaction_test.go b/services/wallet/transfer/transaction_manager_multitransaction_test.go index b3a09530e..fdd789426 100644 --- a/services/wallet/transfer/transaction_manager_multitransaction_test.go +++ b/services/wallet/transfer/transaction_manager_multitransaction_test.go @@ -319,7 +319,7 @@ func TestCreateMultiTransactionFromCommand(t *testing.T) { var command *MultiTransactionCommand // Test types that should get chainID from the data - mtTypes := []MultiTransactionType{MultiTransactionSend, MultiTransactionApprove, MultiTransactionSwap, MultiTransactionType(7)} + mtTypes := []MultiTransactionType{MultiTransactionSend, MultiTransactionApprove, MultiTransactionSwap, MultiTransactionBridge, MultiTransactionType(7)} for _, mtType := range mtTypes { fromAmount := hexutil.Big(*big.NewInt(1000000000000000000)) @@ -339,6 +339,13 @@ func TestCreateMultiTransactionFromCommand(t *testing.T) { ChainID: 1, }) + if mtType == MultiTransactionBridge { + data[0].HopTx = &pathprocessor.HopBridgeTxArgs{ + ChainID: 1, + ChainIDTo: 2, + } + } + multiTransaction, err := tm.CreateMultiTransactionFromCommand(command, data) if mtType > MultiTransactionApprove { // Unsupported type