Account_nfts (#598)

Fixes #601
This commit is contained in:
cyan317
2023-04-24 14:17:28 +01:00
committed by GitHub
parent 88e25687dc
commit 9a19519550
6 changed files with 665 additions and 2 deletions

View File

@@ -481,9 +481,33 @@ CreateSignerLists(std::vector<std::pair<std::string, uint32_t>> const& signers)
entry.setAccountID(ripple::sfAccount, GetAccountIDWithString(signer.first));
entry.setFieldU16(ripple::sfSignerWeight, signer.second);
quorum += signer.second;
list.push_back(entry);
list.push_back(std::move(entry));
}
signerlists.setFieldU32(ripple::sfSignerQuorum, quorum);
signerlists.setFieldArray(ripple::sfSignerEntries, list);
return signerlists;
}
ripple::STObject
CreateNFTTokenPage(
std::vector<std::pair<std::string, std::string>> const& tokens,
std::optional<ripple::uint256> previousPage)
{
auto tokenPage = ripple::STObject(ripple::sfLedgerEntry);
tokenPage.setFieldU16(ripple::sfLedgerEntryType, ripple::ltNFTOKEN_PAGE);
tokenPage.setFieldU32(ripple::sfFlags, 0);
tokenPage.setFieldH256(ripple::sfPreviousTxnID, ripple::uint256());
tokenPage.setFieldU32(ripple::sfPreviousTxnLgrSeq, 0);
if (previousPage)
tokenPage.setFieldH256(ripple::sfPreviousPageMin, *previousPage);
ripple::STArray list;
for (auto const& token : tokens)
{
auto entry = ripple::STObject(ripple::sfNFToken);
entry.setFieldH256(ripple::sfNFTokenID, ripple::uint256{token.first.c_str()});
entry.setFieldVL(ripple::sfURI, ripple::Slice(token.second.c_str(), token.second.size()));
list.push_back(std::move(entry));
}
tokenPage.setFieldArray(ripple::sfNFTokens, list);
return tokenPage;
}