diff --git a/src/transactionsFactories/transferTransactionsFactory.spec.ts b/src/transactionsFactories/transferTransactionsFactory.spec.ts index d949f38f..3e354b13 100644 --- a/src/transactionsFactories/transferTransactionsFactory.spec.ts +++ b/src/transactionsFactories/transferTransactionsFactory.spec.ts @@ -121,7 +121,7 @@ describe("test transfer transactions factory", function () { it("should fail to create transaction for token transfers", async () => { assert.throws(() => { - transferFactory.createTransactionForTokenTransfer({ + transferFactory.createTransactionForTransfer({ sender: alice, receiver: bob, }); @@ -131,7 +131,7 @@ describe("test transfer transactions factory", function () { const nft = new Token({ identifier: "NFT-123456", nonce: 10n }); const transfer = new TokenTransfer({ token: nft, amount: 1n }); - transferFactory.createTransactionForTokenTransfer({ + transferFactory.createTransactionForTransfer({ sender: alice, receiver: bob, tokenTransfers: [transfer], @@ -147,7 +147,7 @@ describe("test transfer transactions factory", function () { const secondNft = new Token({ identifier: "TEST-987654", nonce: 1n }); const secondTransfer = new TokenTransfer({ token: secondNft, amount: 1n }); - const transaction = transferFactory.createTransactionForTokenTransfer({ + const transaction = transferFactory.createTransactionForTransfer({ sender: alice, receiver: bob, nativeAmount: 1000000000000000000n, diff --git a/src/transactionsFactories/transferTransactionsFactory.ts b/src/transactionsFactories/transferTransactionsFactory.ts index dcccdf2e..3e1d42ba 100644 --- a/src/transactionsFactories/transferTransactionsFactory.ts +++ b/src/transactionsFactories/transferTransactionsFactory.ts @@ -145,7 +145,7 @@ export class TransferTransactionsFactory { }).build(); } - createTransactionForTokenTransfer(options: { + createTransactionForTransfer(options: { sender: IAddress; receiver: IAddress; nativeAmount?: bigint; @@ -169,22 +169,11 @@ export class TransferTransactionsFactory { }); } - if (options.tokenTransfers?.length && !options.nativeAmount) { - return this.createTransactionForESDTTokenTransfer({ - sender: options.sender, - receiver: options.receiver, - tokenTransfers: options.tokenTransfers, - }); - } - - // if the method does not return until here it means both nativeAmount and tokenTransfers have been provided - const nativeAmount = options.nativeAmount || 0n; let tokenTransfers = options.tokenTransfers ? [...options.tokenTransfers] : []; - const nativeToken = new Token({ identifier: EGLD_IDENTIFIER_FOR_MULTI_ESDTNFT_TRANSFER }); - const nativeTransfer = new TokenTransfer({ token: nativeToken, amount: nativeAmount }); + const nativeTransfer = this.createNativeTransfer(options.nativeAmount); + nativeTransfer ? tokenTransfers.push(nativeTransfer) : null; - tokenTransfers.push(nativeTransfer); return this.createTransactionForESDTTokenTransfer({ sender: options.sender, receiver: options.receiver, @@ -192,6 +181,15 @@ export class TransferTransactionsFactory { }); } + private createNativeTransfer(nativeAmount?: bigint): TokenTransfer | undefined { + if (!nativeAmount) { + return undefined; + } + + const nativeToken = new Token({ identifier: EGLD_IDENTIFIER_FOR_MULTI_ESDTNFT_TRANSFER }); + return new TokenTransfer({ token: nativeToken, amount: nativeAmount }); + } + /** * This is a legacy method. Can only be used if the class was instantiated using `GasEstimator`. * Use {@link createTransactionForNativeTokenTransfer} instead.