mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-03 08:46:46 +00:00
keylet::nftpage -> keylet::nftokenPage
This commit is contained in:
@@ -221,14 +221,14 @@ payChannel(AccountID const& src, AccountID const& dst, std::uint32_t seq) noexce
|
||||
/** @{ */
|
||||
/** A keylet for the owner's first possible NFT page. */
|
||||
Keylet
|
||||
nftpage_min(AccountID const& owner);
|
||||
nftokenPage_min(AccountID const& owner);
|
||||
|
||||
/** A keylet for the owner's last possible NFT page. */
|
||||
Keylet
|
||||
nftpage_max(AccountID const& owner);
|
||||
nftokenPage_max(AccountID const& owner);
|
||||
|
||||
Keylet
|
||||
nftpage(Keylet const& k, uint256 const& token);
|
||||
nftokenPage(Keylet const& k, uint256 const& token);
|
||||
/** @} */
|
||||
|
||||
/** An offer from an account to buy or sell an NFT */
|
||||
@@ -379,8 +379,12 @@ std::array<keyletDesc<AccountID const&>, 6> const directAccountKeylets{
|
||||
{.function = &keylet::signerList, .expectedLEName = jss::SignerList, .includeInTests = true},
|
||||
// It's normally impossible to create an item at nftpage_min, but
|
||||
// test it anyway, since the invariant checks for it.
|
||||
{.function = &keylet::nftpage_min, .expectedLEName = jss::NFTokenPage, .includeInTests = true},
|
||||
{.function = &keylet::nftpage_max, .expectedLEName = jss::NFTokenPage, .includeInTests = true},
|
||||
{.function = &keylet::nftokenPage_min,
|
||||
.expectedLEName = jss::NFTokenPage,
|
||||
.includeInTests = true},
|
||||
{.function = &keylet::nftokenPage_max,
|
||||
.expectedLEName = jss::NFTokenPage,
|
||||
.includeInTests = true},
|
||||
{.function = &keylet::did, .expectedLEName = jss::DID, .includeInTests = true}}};
|
||||
|
||||
MPTID
|
||||
|
||||
@@ -84,7 +84,7 @@ LEDGER_ENTRY(ltNEGATIVE_UNL, 0x004e, NegativeUNL, nunl, ({
|
||||
|
||||
/** A ledger object which contains a list of NFTs
|
||||
|
||||
\sa keylet::nftpage_min, keylet::nftpage_max, keylet::nftpage
|
||||
\sa keylet::nftokenPage_min, keylet::nftokenPage_max, keylet::nftokenPage
|
||||
*/
|
||||
LEDGER_ENTRY(ltNFTOKEN_PAGE, 0x0050, NFTokenPage, nft_page, ({
|
||||
{sfPreviousPageMin, soeOPTIONAL},
|
||||
|
||||
@@ -43,8 +43,8 @@ namespace xrpl::nft {
|
||||
static std::shared_ptr<SLE const>
|
||||
locatePage(ReadView const& view, AccountID const& owner, uint256 const& id)
|
||||
{
|
||||
auto const first = keylet::nftpage(keylet::nftpage_min(owner), id);
|
||||
auto const last = keylet::nftpage_max(owner);
|
||||
auto const first = keylet::nftokenPage(keylet::nftokenPage_min(owner), id);
|
||||
auto const last = keylet::nftokenPage_max(owner);
|
||||
|
||||
// This NFT can only be found in the first page with a key that's strictly
|
||||
// greater than `first`, so look for that, up until the maximum possible
|
||||
@@ -56,8 +56,8 @@ locatePage(ReadView const& view, AccountID const& owner, uint256 const& id)
|
||||
static std::shared_ptr<SLE>
|
||||
locatePage(ApplyView& view, AccountID const& owner, uint256 const& id)
|
||||
{
|
||||
auto const first = keylet::nftpage(keylet::nftpage_min(owner), id);
|
||||
auto const last = keylet::nftpage_max(owner);
|
||||
auto const first = keylet::nftokenPage(keylet::nftokenPage_min(owner), id);
|
||||
auto const last = keylet::nftokenPage_max(owner);
|
||||
|
||||
// This NFT can only be found in the first page with a key that's strictly
|
||||
// greater than `first`, so look for that, up until the maximum possible
|
||||
@@ -73,9 +73,9 @@ getPageForToken(
|
||||
uint256 const& id,
|
||||
std::function<void(ApplyView&, AccountID const&)> const& createCallback)
|
||||
{
|
||||
auto const base = keylet::nftpage_min(owner);
|
||||
auto const first = keylet::nftpage(base, id);
|
||||
auto const last = keylet::nftpage_max(owner);
|
||||
auto const base = keylet::nftokenPage_min(owner);
|
||||
auto const first = keylet::nftokenPage(base, id);
|
||||
auto const last = keylet::nftokenPage_max(owner);
|
||||
|
||||
// This NFT can only be found in the first page with a key that's strictly
|
||||
// greater than `first`, so look for that, up until the maximum possible
|
||||
@@ -181,7 +181,7 @@ getPageForToken(
|
||||
? narr[dirMaxTokensPerPage - 1].getFieldH256(sfNFTokenID).next()
|
||||
: carr[0].getFieldH256(sfNFTokenID);
|
||||
|
||||
auto np = std::make_shared<SLE>(keylet::nftpage(base, tokenIDForNewPage));
|
||||
auto np = std::make_shared<SLE>(keylet::nftokenPage(base, tokenIDForNewPage));
|
||||
XRPL_ASSERT(np->key() > base.key, "xrpl::nft::getPageForToken : valid NFT page index");
|
||||
np->setFieldArray(sfNFTokens, narr);
|
||||
np->setFieldH256(sfNextPageMin, cp->key());
|
||||
@@ -654,11 +654,11 @@ repairNFTokenDirectoryLinks(ApplyView& view, AccountID const& owner)
|
||||
{
|
||||
bool didRepair = false;
|
||||
|
||||
auto const last = keylet::nftpage_max(owner);
|
||||
auto const last = keylet::nftokenPage_max(owner);
|
||||
|
||||
std::shared_ptr<SLE> page = view.peek(Keylet(
|
||||
ltNFTOKEN_PAGE,
|
||||
view.succ(keylet::nftpage_min(owner).key, last.key.next()).value_or(last.key)));
|
||||
view.succ(keylet::nftokenPage_min(owner).key, last.key.next()).value_or(last.key)));
|
||||
|
||||
if (!page)
|
||||
return didRepair;
|
||||
|
||||
@@ -382,7 +382,7 @@ payChannel(AccountID const& src, AccountID const& dst, std::uint32_t seq) noexce
|
||||
}
|
||||
|
||||
Keylet
|
||||
nftpage_min(AccountID const& owner)
|
||||
nftokenPage_min(AccountID const& owner)
|
||||
{
|
||||
std::array<std::uint8_t, 32> buf{};
|
||||
std::memcpy(buf.data(), owner.data(), owner.size());
|
||||
@@ -390,7 +390,7 @@ nftpage_min(AccountID const& owner)
|
||||
}
|
||||
|
||||
Keylet
|
||||
nftpage_max(AccountID const& owner)
|
||||
nftokenPage_max(AccountID const& owner)
|
||||
{
|
||||
uint256 id = nft::pageMask;
|
||||
std::memcpy(id.data(), owner.data(), owner.size());
|
||||
@@ -398,9 +398,9 @@ nftpage_max(AccountID const& owner)
|
||||
}
|
||||
|
||||
Keylet
|
||||
nftpage(Keylet const& k, uint256 const& token)
|
||||
nftokenPage(Keylet const& k, uint256 const& token)
|
||||
{
|
||||
XRPL_ASSERT(k.type == ltNFTOKEN_PAGE, "xrpl::keylet::nftpage : valid input type");
|
||||
XRPL_ASSERT(k.type == ltNFTOKEN_PAGE, "xrpl::keylet::nftokenPage : valid input type");
|
||||
return {ltNFTOKEN_PAGE, (k.key & ~nft::pageMask) + (token & nft::pageMask)};
|
||||
}
|
||||
|
||||
|
||||
@@ -537,8 +537,8 @@ AccountRootsDeletedClean::finalize(
|
||||
// checked above as entries in directAccountKeylets. This uses
|
||||
// view.succ() to check for any NFT pages in between the two
|
||||
// endpoints.
|
||||
Keylet const first = keylet::nftpage_min(accountID);
|
||||
Keylet const last = keylet::nftpage_max(accountID);
|
||||
Keylet const first = keylet::nftokenPage_min(accountID);
|
||||
Keylet const last = keylet::nftokenPage_max(accountID);
|
||||
|
||||
std::optional<uint256> key = view.succ(first.key, last.key.next());
|
||||
|
||||
|
||||
@@ -261,8 +261,8 @@ AccountDelete::preclaim(PreclaimContext const& ctx)
|
||||
return tecHAS_OBLIGATIONS;
|
||||
|
||||
// If the account owns any NFTs it cannot be deleted.
|
||||
Keylet const first = keylet::nftpage_min(account);
|
||||
Keylet const last = keylet::nftpage_max(account);
|
||||
Keylet const first = keylet::nftokenPage_min(account);
|
||||
Keylet const last = keylet::nftokenPage_max(account);
|
||||
|
||||
auto const cp = ctx.view.read(
|
||||
Keylet(ltNFTOKEN_PAGE, ctx.view.succ(first.key, last.key.next()).value_or(last.key)));
|
||||
|
||||
@@ -260,7 +260,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
// Get the index of the middle page.
|
||||
uint256 const aliceMiddleNFTokenPageIndex = [&env, &alice]() {
|
||||
auto lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
auto lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
return lastNFTokenPage->at(sfPreviousPageMin);
|
||||
}();
|
||||
|
||||
@@ -283,12 +283,12 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
// Removing the last token from the last page deletes the last
|
||||
// page. This is a bug. The contents of the next-to-last page
|
||||
// should have been moved into the last page.
|
||||
BEAST_EXPECT(!env.le(keylet::nftpage_max(alice)));
|
||||
BEAST_EXPECT(!env.le(keylet::nftokenPage_max(alice)));
|
||||
|
||||
// alice's "middle" page is still present, but has no links.
|
||||
{
|
||||
auto aliceMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), aliceMiddleNFTokenPageIndex));
|
||||
auto aliceMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), aliceMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(aliceMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -308,7 +308,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
// Get the index of the middle page.
|
||||
uint256 const bobMiddleNFTokenPageIndex = [&env, &bob]() {
|
||||
auto lastNFTokenPage = env.le(keylet::nftpage_max(bob));
|
||||
auto lastNFTokenPage = env.le(keylet::nftokenPage_max(bob));
|
||||
return lastNFTokenPage->at(sfPreviousPageMin);
|
||||
}();
|
||||
|
||||
@@ -325,13 +325,13 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
// Removing the last token from the last page deletes the last
|
||||
// page. This is a bug. The contents of the next-to-last page
|
||||
// should have been moved into the last page.
|
||||
BEAST_EXPECT(!env.le(keylet::nftpage_max(bob)));
|
||||
BEAST_EXPECT(!env.le(keylet::nftokenPage_max(bob)));
|
||||
|
||||
// bob's "middle" page is still present, but has lost the
|
||||
// NextPageMin field.
|
||||
{
|
||||
auto bobMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(bob), bobMiddleNFTokenPageIndex));
|
||||
auto bobMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(bob), bobMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(bobMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -351,7 +351,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
// Get the index of the middle page.
|
||||
uint256 const carolMiddleNFTokenPageIndex = [&env, &carol]() {
|
||||
auto lastNFTokenPage = env.le(keylet::nftpage_max(carol));
|
||||
auto lastNFTokenPage = env.le(keylet::nftokenPage_max(carol));
|
||||
return lastNFTokenPage->at(sfPreviousPageMin);
|
||||
}();
|
||||
|
||||
@@ -376,12 +376,12 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
// Removing the last token from the last page deletes the last
|
||||
// page. This is a bug. The contents of the next-to-last page
|
||||
// should have been moved into the last page.
|
||||
BEAST_EXPECT(!env.le(keylet::nftpage_max(carol)));
|
||||
BEAST_EXPECT(!env.le(keylet::nftokenPage_max(carol)));
|
||||
|
||||
// carol's "middle" page is still present, but has lost the
|
||||
// NextPageMin field.
|
||||
auto carolMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
auto carolMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(carolMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -411,8 +411,8 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
// carol's "middle" page is present and still has no NextPageMin field.
|
||||
{
|
||||
auto carolMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
auto carolMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(carolMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -421,7 +421,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
}
|
||||
// carol has a "last" page again, but it has no PreviousPageMin field.
|
||||
{
|
||||
auto carolLastNFTokenPage = env.le(keylet::nftpage_max(carol));
|
||||
auto carolLastNFTokenPage = env.le(keylet::nftokenPage_max(carol));
|
||||
|
||||
BEAST_EXPECT(!carolLastNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
BEAST_EXPECT(!carolLastNFTokenPage->isFieldPresent(sfNextPageMin));
|
||||
@@ -449,12 +449,12 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
// Verify that alice's NFToken directory is still damaged.
|
||||
|
||||
// alice's last page should still be missing.
|
||||
BEAST_EXPECT(!env.le(keylet::nftpage_max(alice)));
|
||||
BEAST_EXPECT(!env.le(keylet::nftokenPage_max(alice)));
|
||||
|
||||
// alice's "middle" page is still present and has no links.
|
||||
{
|
||||
auto aliceMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), aliceMiddleNFTokenPageIndex));
|
||||
auto aliceMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), aliceMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(aliceMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -473,7 +473,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
// alice's last page should now be present and include no links.
|
||||
{
|
||||
auto aliceLastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
auto aliceLastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(aliceLastNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -482,8 +482,8 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
// alice's middle page should be gone.
|
||||
BEAST_EXPECT(
|
||||
!env.le(keylet::nftpage(keylet::nftpage_min(alice), aliceMiddleNFTokenPageIndex)));
|
||||
BEAST_EXPECT(!env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), aliceMiddleNFTokenPageIndex)));
|
||||
|
||||
BEAST_EXPECT(nftCount(env, alice) == 32);
|
||||
BEAST_EXPECT(ownerCount(env, alice) == 1);
|
||||
@@ -495,12 +495,12 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
// Verify that bob's NFToken directory is still damaged.
|
||||
|
||||
// bob's last page should still be missing.
|
||||
BEAST_EXPECT(!env.le(keylet::nftpage_max(bob)));
|
||||
BEAST_EXPECT(!env.le(keylet::nftokenPage_max(bob)));
|
||||
|
||||
// bob's "middle" page is still present and missing NextPageMin.
|
||||
{
|
||||
auto bobMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(bob), bobMiddleNFTokenPageIndex));
|
||||
auto bobMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(bob), bobMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(bobMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -515,7 +515,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
// bob's last page should now be present and include a previous
|
||||
// link but no next link.
|
||||
{
|
||||
auto const lastPageKeylet = keylet::nftpage_max(bob);
|
||||
auto const lastPageKeylet = keylet::nftokenPage_max(bob);
|
||||
auto const bobLastNFTokenPage = env.le(lastPageKeylet);
|
||||
if (!BEAST_EXPECT(bobLastNFTokenPage))
|
||||
return;
|
||||
@@ -525,8 +525,8 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
BEAST_EXPECT(!bobLastNFTokenPage->isFieldPresent(sfNextPageMin));
|
||||
|
||||
auto const bobNewFirstNFTokenPage = env.le(
|
||||
keylet::nftpage(
|
||||
keylet::nftpage_min(bob), bobLastNFTokenPage->at(sfPreviousPageMin)));
|
||||
keylet::nftokenPage(
|
||||
keylet::nftokenPage_min(bob), bobLastNFTokenPage->at(sfPreviousPageMin)));
|
||||
if (!BEAST_EXPECT(bobNewFirstNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -537,7 +537,8 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
// bob's middle page should be gone.
|
||||
BEAST_EXPECT(!env.le(keylet::nftpage(keylet::nftpage_min(bob), bobMiddleNFTokenPageIndex)));
|
||||
BEAST_EXPECT(
|
||||
!env.le(keylet::nftokenPage(keylet::nftokenPage_min(bob), bobMiddleNFTokenPageIndex)));
|
||||
|
||||
BEAST_EXPECT(nftCount(env, bob) == 64);
|
||||
BEAST_EXPECT(ownerCount(env, bob) == 2);
|
||||
@@ -550,8 +551,8 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
// carol's "middle" page is present and has no NextPageMin field.
|
||||
{
|
||||
auto carolMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
auto carolMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(carolMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -560,7 +561,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
}
|
||||
// carol has a "last" page, but it has no PreviousPageMin field.
|
||||
{
|
||||
auto carolLastNFTokenPage = env.le(keylet::nftpage_max(carol));
|
||||
auto carolLastNFTokenPage = env.le(keylet::nftokenPage_max(carol));
|
||||
|
||||
BEAST_EXPECT(!carolLastNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
BEAST_EXPECT(!carolLastNFTokenPage->isFieldPresent(sfNextPageMin));
|
||||
@@ -572,9 +573,9 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
{
|
||||
// carol's "middle" page is present and now has a NextPageMin field.
|
||||
auto const lastPageKeylet = keylet::nftpage_max(carol);
|
||||
auto carolMiddleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
auto const lastPageKeylet = keylet::nftokenPage_max(carol);
|
||||
auto carolMiddleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(carol), carolMiddleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(carolMiddleNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -595,8 +596,8 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite
|
||||
|
||||
// carol also has a "first" page that includes a NextPageMin field.
|
||||
auto carolFirstNFTokenPage = env.le(
|
||||
keylet::nftpage(
|
||||
keylet::nftpage_min(carol), carolMiddleNFTokenPage->at(sfPreviousPageMin)));
|
||||
keylet::nftokenPage(
|
||||
keylet::nftokenPage_min(carol), carolMiddleNFTokenPage->at(sfPreviousPageMin)));
|
||||
if (!BEAST_EXPECT(carolFirstNFTokenPage))
|
||||
return;
|
||||
|
||||
|
||||
@@ -1175,7 +1175,7 @@ class Invariants_test : public beast::unit_test::suite
|
||||
doInvariantCheck(
|
||||
{{"NFT page has invalid size"}},
|
||||
[&makeNFTokenIDs](Account const& A1, Account const&, ApplyContext& ac) {
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage_max(A1));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage_max(A1));
|
||||
nftPage->setFieldArray(sfNFTokens, makeNFTokenIDs(0));
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
@@ -1185,7 +1185,7 @@ class Invariants_test : public beast::unit_test::suite
|
||||
doInvariantCheck(
|
||||
{{"NFT page has invalid size"}},
|
||||
[&makeNFTokenIDs](Account const& A1, Account const&, ApplyContext& ac) {
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage_max(A1));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage_max(A1));
|
||||
nftPage->setFieldArray(sfNFTokens, makeNFTokenIDs(33));
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
@@ -1198,7 +1198,7 @@ class Invariants_test : public beast::unit_test::suite
|
||||
STArray nfTokens = makeNFTokenIDs(2);
|
||||
std::iter_swap(nfTokens.begin(), nfTokens.begin() + 1);
|
||||
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage_max(A1));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage_max(A1));
|
||||
nftPage->setFieldArray(sfNFTokens, nfTokens);
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
@@ -1211,7 +1211,7 @@ class Invariants_test : public beast::unit_test::suite
|
||||
STArray nfTokens = makeNFTokenIDs(1);
|
||||
nfTokens[0].setFieldVL(sfURI, Blob{});
|
||||
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage_max(A1));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage_max(A1));
|
||||
nftPage->setFieldArray(sfNFTokens, nfTokens);
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
@@ -1221,9 +1221,9 @@ class Invariants_test : public beast::unit_test::suite
|
||||
doInvariantCheck(
|
||||
{{"NFT page is improperly linked"}},
|
||||
[&makeNFTokenIDs](Account const& A1, Account const&, ApplyContext& ac) {
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage_max(A1));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage_max(A1));
|
||||
nftPage->setFieldArray(sfNFTokens, makeNFTokenIDs(1));
|
||||
nftPage->setFieldH256(sfPreviousPageMin, keylet::nftpage_max(A1).key);
|
||||
nftPage->setFieldH256(sfPreviousPageMin, keylet::nftokenPage_max(A1).key);
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
return true;
|
||||
@@ -1232,9 +1232,9 @@ class Invariants_test : public beast::unit_test::suite
|
||||
doInvariantCheck(
|
||||
{{"NFT page is improperly linked"}},
|
||||
[&makeNFTokenIDs](Account const& A1, Account const& A2, ApplyContext& ac) {
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage_max(A1));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage_max(A1));
|
||||
nftPage->setFieldArray(sfNFTokens, makeNFTokenIDs(1));
|
||||
nftPage->setFieldH256(sfPreviousPageMin, keylet::nftpage_min(A2).key);
|
||||
nftPage->setFieldH256(sfPreviousPageMin, keylet::nftokenPage_min(A2).key);
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
return true;
|
||||
@@ -1243,7 +1243,7 @@ class Invariants_test : public beast::unit_test::suite
|
||||
doInvariantCheck(
|
||||
{{"NFT page is improperly linked"}},
|
||||
[&makeNFTokenIDs](Account const& A1, Account const&, ApplyContext& ac) {
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage_max(A1));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage_max(A1));
|
||||
nftPage->setFieldArray(sfNFTokens, makeNFTokenIDs(1));
|
||||
nftPage->setFieldH256(sfNextPageMin, nftPage->key());
|
||||
|
||||
@@ -1255,10 +1255,10 @@ class Invariants_test : public beast::unit_test::suite
|
||||
{{"NFT page is improperly linked"}},
|
||||
[&makeNFTokenIDs](Account const& A1, Account const& A2, ApplyContext& ac) {
|
||||
STArray nfTokens = makeNFTokenIDs(1);
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage(
|
||||
keylet::nftpage_max(A1), ++(nfTokens[0].getFieldH256(sfNFTokenID))));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage(
|
||||
keylet::nftokenPage_max(A1), ++(nfTokens[0].getFieldH256(sfNFTokenID))));
|
||||
nftPage->setFieldArray(sfNFTokens, nfTokens);
|
||||
nftPage->setFieldH256(sfNextPageMin, keylet::nftpage_max(A2).key);
|
||||
nftPage->setFieldH256(sfNextPageMin, keylet::nftokenPage_max(A2).key);
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
return true;
|
||||
@@ -1268,8 +1268,8 @@ class Invariants_test : public beast::unit_test::suite
|
||||
{{"NFT found in incorrect page"}},
|
||||
[&makeNFTokenIDs](Account const& A1, Account const&, ApplyContext& ac) {
|
||||
STArray nfTokens = makeNFTokenIDs(2);
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftpage(
|
||||
keylet::nftpage_max(A1), (nfTokens[1].getFieldH256(sfNFTokenID))));
|
||||
auto nftPage = std::make_shared<SLE>(keylet::nftokenPage(
|
||||
keylet::nftokenPage_max(A1), (nfTokens[1].getFieldH256(sfNFTokenID))));
|
||||
nftPage->setFieldArray(sfNFTokens, nfTokens);
|
||||
|
||||
ac.view().insert(nftPage);
|
||||
|
||||
@@ -472,19 +472,19 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
|
||||
// Verify that that all three pages are present and remember the
|
||||
// indexes.
|
||||
auto lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
auto lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(lastNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const middleNFTokenPageIndex = lastNFTokenPage->at(sfPreviousPageMin);
|
||||
auto middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const firstNFTokenPageIndex = middleNFTokenPage->at(sfPreviousPageMin);
|
||||
auto firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(firstNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -498,7 +498,7 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
|
||||
// Verify that the last page is still present and contains just one
|
||||
// NFT.
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(lastNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -517,21 +517,21 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
// _previous_ page because we need to preserve that last
|
||||
// page an an anchor. The contents of the next-to-last page
|
||||
// are moved into the last page.
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
BEAST_EXPECT(lastNFTokenPage);
|
||||
BEAST_EXPECT(lastNFTokenPage->at(~sfPreviousPageMin) == firstNFTokenPageIndex);
|
||||
BEAST_EXPECT(!lastNFTokenPage->isFieldPresent(sfNextPageMin));
|
||||
BEAST_EXPECT(lastNFTokenPage->getFieldArray(sfNFTokens).size() == 32);
|
||||
|
||||
// The "middle" page should be gone.
|
||||
middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
middleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
BEAST_EXPECT(!middleNFTokenPage);
|
||||
|
||||
// The "first" page should still be present and linked to
|
||||
// the last page.
|
||||
firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
firstNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
BEAST_EXPECT(firstNFTokenPage);
|
||||
BEAST_EXPECT(!firstNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
BEAST_EXPECT(firstNFTokenPage->at(~sfNextPageMin) == lastNFTokenPage->key());
|
||||
@@ -542,13 +542,13 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
// Removing the last token from the last page deletes the last
|
||||
// page. This is a bug. The contents of the next-to-last page
|
||||
// should have been moved into the last page.
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
BEAST_EXPECT(!lastNFTokenPage);
|
||||
|
||||
// The "middle" page is still present, but has lost the
|
||||
// NextPageMin field.
|
||||
middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
middleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
BEAST_EXPECT(middleNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
@@ -576,19 +576,19 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
|
||||
// Verify that that all three pages are present and remember the
|
||||
// indexes.
|
||||
auto lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
auto lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(lastNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const middleNFTokenPageIndex = lastNFTokenPage->at(sfPreviousPageMin);
|
||||
auto middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const firstNFTokenPageIndex = middleNFTokenPage->at(sfPreviousPageMin);
|
||||
auto firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(firstNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -604,17 +604,18 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
// Verify that middle page is gone and the links in the two
|
||||
// remaining pages are correct.
|
||||
middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
BEAST_EXPECT(!middleNFTokenPage);
|
||||
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
BEAST_EXPECT(!lastNFTokenPage->isFieldPresent(sfNextPageMin));
|
||||
BEAST_EXPECT(lastNFTokenPage->getFieldH256(sfPreviousPageMin) == firstNFTokenPageIndex);
|
||||
|
||||
firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
BEAST_EXPECT(
|
||||
firstNFTokenPage->getFieldH256(sfNextPageMin) == keylet::nftpage_max(alice).key);
|
||||
firstNFTokenPage->getFieldH256(sfNextPageMin) ==
|
||||
keylet::nftokenPage_max(alice).key);
|
||||
BEAST_EXPECT(!firstNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
|
||||
// Burn the remaining nfts.
|
||||
@@ -637,19 +638,19 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
|
||||
// Verify that that all three pages are present and remember the
|
||||
// indexes.
|
||||
auto lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
auto lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(lastNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const middleNFTokenPageIndex = lastNFTokenPage->at(sfPreviousPageMin);
|
||||
auto middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const firstNFTokenPageIndex = middleNFTokenPage->at(sfPreviousPageMin);
|
||||
auto firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(firstNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -664,18 +665,18 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
|
||||
// Verify the first page is gone.
|
||||
firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
BEAST_EXPECT(!firstNFTokenPage);
|
||||
|
||||
// Check the links in the other two pages.
|
||||
middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
BEAST_EXPECT(!middleNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
BEAST_EXPECT(middleNFTokenPage->isFieldPresent(sfNextPageMin));
|
||||
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(lastNFTokenPage))
|
||||
return;
|
||||
BEAST_EXPECT(lastNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
@@ -696,20 +697,20 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
// _previous_ page because we need to preserve that last
|
||||
// page an an anchor. The contents of the next-to-last page
|
||||
// are moved into the last page.
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
BEAST_EXPECT(lastNFTokenPage);
|
||||
BEAST_EXPECT(!lastNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
BEAST_EXPECT(!lastNFTokenPage->isFieldPresent(sfNextPageMin));
|
||||
BEAST_EXPECT(lastNFTokenPage->getFieldArray(sfNFTokens).size() == 32);
|
||||
|
||||
// The "middle" page should be gone.
|
||||
middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
middleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
BEAST_EXPECT(!middleNFTokenPage);
|
||||
|
||||
// The "first" page should still be gone.
|
||||
firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
firstNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
BEAST_EXPECT(!firstNFTokenPage);
|
||||
}
|
||||
else
|
||||
@@ -717,13 +718,13 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
// Removing the last token from the last page deletes the last
|
||||
// page. This is a bug. The contents of the next-to-last page
|
||||
// should have been moved into the last page.
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
BEAST_EXPECT(!lastNFTokenPage);
|
||||
|
||||
// The "middle" page is still present, but has lost the
|
||||
// NextPageMin field.
|
||||
middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
middleNFTokenPage = env.le(
|
||||
keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
BEAST_EXPECT(!middleNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
@@ -777,7 +778,7 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
env.app(), ov, tx, tesSUCCESS, env.current()->fees().base, tapNONE, jlog};
|
||||
|
||||
// Verify that the last page is present and contains one NFT.
|
||||
auto lastNFTokenPage = ac.view().peek(keylet::nftpage_max(alice));
|
||||
auto lastNFTokenPage = ac.view().peek(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(lastNFTokenPage))
|
||||
return;
|
||||
BEAST_EXPECT(lastNFTokenPage->getFieldArray(sfNFTokens).size() == 1);
|
||||
@@ -810,10 +811,10 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
env.app(), ov, tx, tesSUCCESS, env.current()->fees().base, tapNONE, jlog};
|
||||
|
||||
// Verify that the middle page is present.
|
||||
auto lastNFTokenPage = ac.view().peek(keylet::nftpage_max(alice));
|
||||
auto lastNFTokenPage = ac.view().peek(keylet::nftokenPage_max(alice));
|
||||
auto middleNFTokenPage = ac.view().peek(
|
||||
keylet::nftpage(
|
||||
keylet::nftpage_min(alice),
|
||||
keylet::nftokenPage(
|
||||
keylet::nftokenPage_min(alice),
|
||||
lastNFTokenPage->getFieldH256(sfPreviousPageMin)));
|
||||
BEAST_EXPECT(middleNFTokenPage);
|
||||
|
||||
@@ -1093,19 +1094,19 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
|
||||
// Verify that that all three pages are present and remember the
|
||||
// indexes.
|
||||
auto lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
auto lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
if (!BEAST_EXPECT(lastNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const middleNFTokenPageIndex = lastNFTokenPage->at(sfPreviousPageMin);
|
||||
auto middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
|
||||
uint256 const firstNFTokenPageIndex = middleNFTokenPage->at(sfPreviousPageMin);
|
||||
auto firstNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), firstNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), firstNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(firstNFTokenPage))
|
||||
return;
|
||||
|
||||
@@ -1129,14 +1130,14 @@ class NFTokenBurn_test : public beast::unit_test::suite
|
||||
// Removing the last token from the last page deletes alice's last
|
||||
// page. This is a bug. The contents of the next-to-last page
|
||||
// should have been moved into the last page.
|
||||
lastNFTokenPage = env.le(keylet::nftpage_max(alice));
|
||||
lastNFTokenPage = env.le(keylet::nftokenPage_max(alice));
|
||||
BEAST_EXPECT(!lastNFTokenPage);
|
||||
BEAST_EXPECT(ownerCount(env, alice) == 2);
|
||||
|
||||
// The "middle" page is still present, but has lost the
|
||||
// NextPageMin field.
|
||||
middleNFTokenPage =
|
||||
env.le(keylet::nftpage(keylet::nftpage_min(alice), middleNFTokenPageIndex));
|
||||
env.le(keylet::nftokenPage(keylet::nftokenPage_min(alice), middleNFTokenPageIndex));
|
||||
if (!BEAST_EXPECT(middleNFTokenPage))
|
||||
return;
|
||||
BEAST_EXPECT(middleNFTokenPage->isFieldPresent(sfPreviousPageMin));
|
||||
|
||||
@@ -1561,7 +1561,7 @@ class LedgerEntry_test : public beast::unit_test::suite
|
||||
env(token::mint(issuer, 0), txflags(tfTransferable));
|
||||
env.close();
|
||||
|
||||
auto const nftpage = keylet::nftpage_max(issuer);
|
||||
auto const nftpage = keylet::nftokenPage_max(issuer);
|
||||
BEAST_EXPECT(env.le(nftpage) != nullptr);
|
||||
|
||||
{
|
||||
|
||||
@@ -74,8 +74,8 @@ doAccountNFTs(RPC::JsonContext& context)
|
||||
return RPC::invalid_field_error(jss::marker);
|
||||
}
|
||||
|
||||
auto const first = keylet::nftpage(keylet::nftpage_min(accountID), marker);
|
||||
auto const last = keylet::nftpage_max(accountID);
|
||||
auto const first = keylet::nftokenPage(keylet::nftokenPage_min(accountID), marker);
|
||||
auto const last = keylet::nftokenPage_max(accountID);
|
||||
|
||||
auto cp = ledger->read(
|
||||
Keylet(ltNFTOKEN_PAGE, ledger->succ(first.key, last.key.next()).value_or(last.key)));
|
||||
|
||||
@@ -61,7 +61,7 @@ getAccountObjects(
|
||||
(!typeFilter.has_value() || typeMatchesFilter(typeFilter.value(), ltNFTOKEN_PAGE)) &&
|
||||
dirIndex == beast::zero;
|
||||
|
||||
Keylet const firstNFTPage = keylet::nftpage_min(account);
|
||||
Keylet const firstNFTPage = keylet::nftokenPage_min(account);
|
||||
|
||||
// we need to check the marker to see if it is an NFTTokenPage index.
|
||||
if (iterateNFTPages && entryIndex != beast::zero)
|
||||
@@ -85,7 +85,7 @@ getAccountObjects(
|
||||
Keylet const first =
|
||||
entryIndex == beast::zero ? firstNFTPage : Keylet{ltNFTOKEN_PAGE, entryIndex};
|
||||
|
||||
Keylet const last = keylet::nftpage_max(account);
|
||||
Keylet const last = keylet::nftokenPage_max(account);
|
||||
|
||||
// current key
|
||||
uint256 ck = ledger.succ(first.key, last.key.next()).value_or(last.key);
|
||||
|
||||
Reference in New Issue
Block a user