fix: Fail to deduplicate the same nfts in ttNFTOKEN_CANCEL_OFFER (#1542)

This commit is contained in:
cyan317
2024-07-16 10:50:20 +01:00
committed by GitHub
parent d6ae890f83
commit 8a613c5de8
4 changed files with 66 additions and 6 deletions

View File

@@ -294,14 +294,12 @@ getNFTokenCancelOfferData(ripple::TxMeta const& txMeta, ripple::STTx const& sttx
txs.emplace_back(tokenID, txMeta, sttx.getTransactionID());
}
// Deduplicate any transactions based on tokenID/txIdx combo. Can't just
// use txIdx because in this case one tx can cancel offers for several
// NFTs.
// Deduplicate any transactions based on tokenID
std::sort(txs.begin(), txs.end(), [](NFTTransactionsData const& a, NFTTransactionsData const& b) {
return a.tokenID < b.tokenID && a.transactionIndex < b.transactionIndex;
return a.tokenID < b.tokenID;
});
auto last = std::unique(txs.begin(), txs.end(), [](NFTTransactionsData const& a, NFTTransactionsData const& b) {
return a.tokenID == b.tokenID && a.transactionIndex == b.transactionIndex;
return a.tokenID == b.tokenID;
});
txs.erase(last, txs.end());
return {txs, {}};