From 7d9c2dc9f476868ccfc78432915725c40d667dfb Mon Sep 17 00:00:00 2001 From: Doug Richar Date: Tue, 8 Jul 2025 00:55:28 -0400 Subject: [PATCH] fix(lookup): parse reservedFor from on-chain state Fix reservation information extraction in `resolve` method by reading from actual on-chain state field 'i.reservedOwner.a' instead of verified properties. This enables proper NFD claiming functionality for reserved NFDs. Previously, `reservedFor` was incorrectly sourced from verified properties which do not contain the reservation data. Now correctly parses the reservation address from global state and adds it to both top-level NFD object and internal properties for consistent access patterns. --- packages/sdk/src/modules/lookup.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/modules/lookup.ts b/packages/sdk/src/modules/lookup.ts index 889d8b3..25a3406 100644 --- a/packages/sdk/src/modules/lookup.ts +++ b/packages/sdk/src/modules/lookup.ts @@ -239,7 +239,7 @@ export class LookupModule extends BaseModule { expired: isExpired, owner: parseAddress('i.owner.a', globalState), nfdAccount: instanceClient.appAddress.toString(), - reservedFor: verified['reservedFor'], + reservedFor: parseAddress('i.reservedOwner.a', globalState) || undefined, sellAmount: parseUint64('i.sellamt', globalState), isMinting: parseString('i.minting', globalState) !== '', } @@ -271,6 +271,9 @@ export class LookupModule extends BaseModule { }), seller: parseAddress('i.seller.a', globalState), nfdAccount: instanceClient.appAddress.toString(), + ...(parseAddress('i.reservedOwner.a', globalState) && { + reservedFor: parseAddress('i.reservedOwner.a', globalState), + }), metaTags, timeCreated: new Date( parseUint64('i.timeCreated', globalState) * 1000, @@ -318,6 +321,9 @@ export class LookupModule extends BaseModule { name: parseString('i.name', globalState), owner: parseAddress('i.owner.a', globalState), seller: parseAddress('i.seller.a', globalState), + ...(parseAddress('i.reservedOwner.a', globalState) && { + reservedOwner: parseAddress('i.reservedOwner.a', globalState), + }), asaid: parseUint64('i.asaid', globalState).toString(), ...(globalState['i.parentAppID'] && { parentAppID: parseUint64('i.parentAppID', globalState).toString(),