20#include <xrpl/protocol/NFTokenID.h>
21#include <xrpl/protocol/jss.h>
28 TxMeta const& transactionMeta)
33 TxType const tt = serializedTx->getTxnType();
34 if (tt != ttNFTOKEN_MINT && tt != ttNFTOKEN_ACCEPT_OFFER &&
35 tt != ttNFTOKEN_CANCEL_OFFER)
56 if (node.getFieldU16(sfLedgerEntryType) != ltNFTOKEN_PAGE)
59 SField const& fName = node.getFName();
60 if (fName == sfCreatedNode)
62 STArray const& toAddPrevNFTs = node.peekAtField(sfNewFields)
64 .getFieldArray(sfNFTokens);
66 toAddPrevNFTs.
begin(),
70 return nft.getFieldH256(sfNFTokenID);
73 else if (fName == sfModifiedNode)
92 toAddPrevNFTs.
begin(),
96 return nft.getFieldH256(sfNFTokenID);
99 STArray const& toAddFinalNFTs = node.peekAtField(sfFinalFields)
101 .getFieldArray(sfNFTokens);
103 toAddFinalNFTs.
begin(),
104 toAddFinalNFTs.
end(),
107 return nft.getFieldH256(sfNFTokenID);
114 if (finalIDs.
size() != prevIDs.
size() + 1)
124 if (diff.first == finalIDs.
end())
136 if (node.getFieldU16(sfLedgerEntryType) != ltNFTOKEN_OFFER ||
137 node.getFName() != sfDeletedNode)
140 auto const& toAddNFT = node.peekAtField(sfFinalFields)
142 .getFieldH256(sfNFTokenID);
148 sort(tokenIDResult.
begin(), tokenIDResult.
end());
150 unique(tokenIDResult.
begin(), tokenIDResult.
end()),
151 tokenIDResult.
end());
152 return tokenIDResult;
159 TxMeta const& transactionMeta)
165 if (
auto const type = transaction->getTxnType(); type == ttNFTOKEN_MINT)
171 else if (type == ttNFTOKEN_ACCEPT_OFFER)
176 if (result.
size() > 0)
179 else if (type == ttNFTOKEN_CANCEL_OFFER)
185 for (
auto const& nftID : result)
T back_inserter(T... args)
Value & append(const Value &value)
Append value to array at the end.
const STArray & getFieldArray(SField const &field) const
const STBase & peekAtField(SField const &field) const
bool isFieldPresent(SField const &field) const
@ arrayValue
array value (ordered list)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
std::optional< uint256 > getNFTokenIDFromPage(TxMeta const &transactionMeta)
TxType
Transaction type identifiers.
bool canHaveNFTokenID(std::shared_ptr< STTx const > const &serializedTx, TxMeta const &transactionMeta)
Add a nftoken_ids field to the meta output parameter.
std::vector< uint256 > getNFTokenIDFromDeletedOffer(TxMeta const &transactionMeta)
std::string to_string(base_uint< Bits, Tag > const &a)
void insertNFTokenID(Json::Value &response, std::shared_ptr< STTx const > const &transaction, TxMeta const &transactionMeta)