diff --git a/src/endpoints/tokens/token.transfer.service.ts b/src/endpoints/tokens/token.transfer.service.ts index a695f3e46..7129ddf58 100644 --- a/src/endpoints/tokens/token.transfer.service.ts +++ b/src/endpoints/tokens/token.transfer.service.ts @@ -162,18 +162,6 @@ export class TokenTransferService { } } - const distinctNftIdentifiers = operations.filter(x => x.type === TransactionOperationType.nft).map(x => x.identifier).distinct(); - if (distinctNftIdentifiers.length > 0) { - const elasticNfts = await this.indexerService.getNfts(new QueryPagination({ from: 0, size: distinctNftIdentifiers.length }), new NftFilter({ identifiers: distinctNftIdentifiers })); - const elasticNftsDict = elasticNfts.toRecord(x => x.identifier); - - for (const operation of operations) { - if (elasticNftsDict[operation.identifier]) { - operation.name = elasticNftsDict[operation.identifier].data?.name ?? operation.name; - } - } - } - return operations; } diff --git a/src/endpoints/transactions/transaction.get.service.ts b/src/endpoints/transactions/transaction.get.service.ts index 65b4413b5..a38bc4500 100644 --- a/src/endpoints/transactions/transaction.get.service.ts +++ b/src/endpoints/transactions/transaction.get.service.ts @@ -16,6 +16,10 @@ import { MiniBlockType } from "../miniblocks/entities/mini.block.type"; import { TransactionStatus } from "./entities/transaction.status"; import { UsernameUtils } from "../usernames/username.utils"; import { TransactionLogEvent } from "./entities/transaction.log.event"; +import { TransactionOperationType } from "./entities/transaction.operation.type"; +import { QueryPagination } from "src/common/entities/query.pagination"; +import { NftFilter } from "../nfts/entities/nft.filter"; +import { TokenAccount } from "src/common/indexer/entities"; @Injectable() export class TransactionGetService { @@ -124,6 +128,7 @@ export class TransactionGetService { } this.applyUsernamesToDetailedTransaction(transaction, transactionDetailed); + await this.applyNftNameOnTransactionOperations([transactionDetailed]); return ApiUtils.mergeObjects(new TransactionDetailed(), transactionDetailed); } catch (error) { @@ -249,4 +254,20 @@ export class TransactionGetService { return null; } } + + async applyNftNameOnTransactionOperations(transactions: TransactionDetailed[]): Promise { + const operations = transactions.selectMany(x => x.operations ?? []); + + const distinctNftIdentifiers = operations.filter(x => x.type === TransactionOperationType.nft).map(x => x.identifier).distinct(); + if (distinctNftIdentifiers.length > 0) { + const elasticNfts = await this.indexerService.getNfts(new QueryPagination({ from: 0, size: distinctNftIdentifiers.length }), new NftFilter({ identifiers: distinctNftIdentifiers })); + const elasticNftsDict = elasticNfts.toRecord(x => x.identifier); + + for (const operation of operations) { + if (elasticNftsDict[operation.identifier]) { + operation.name = elasticNftsDict[operation.identifier].data?.name ?? operation.name; + } + } + } + } } diff --git a/src/endpoints/transactions/transaction.service.ts b/src/endpoints/transactions/transaction.service.ts index a44edf1bb..16b9cb021 100644 --- a/src/endpoints/transactions/transaction.service.ts +++ b/src/endpoints/transactions/transaction.service.ts @@ -425,6 +425,8 @@ export class TransactionService { detailedTransactions.push(transactionDetailed); } + await this.transactionGetService.applyNftNameOnTransactionOperations(detailedTransactions); + return detailedTransactions; } @@ -490,6 +492,8 @@ export class TransactionService { } } + await this.transactionGetService.applyNftNameOnTransactionOperations(transactions); + return operations; }