Skip to content

Commit cea47be

Browse files
authored
Handle OwnerQueryForNonexistentToken for non-queryable ERC721A (#140)
1 parent 1d050e3 commit cea47be

File tree

1 file changed

+28
-22
lines changed

1 file changed

+28
-22
lines changed

Thirdweb/Thirdweb.Extensions/ThirdwebExtensions.cs

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1227,40 +1227,46 @@ public static async Task<NFT> ERC721_GetNFT(this ThirdwebContract contract, BigI
12271227
throw new ArgumentNullException(nameof(contract));
12281228
}
12291229

1230-
var uri = await contract.ERC721_TokenURI(tokenId).ConfigureAwait(false);
1231-
NFTMetadata metadata;
1232-
try
1233-
{
1234-
metadata = await ThirdwebStorage.Download<NFTMetadata>(contract.Client, uri).ConfigureAwait(false);
1235-
}
1236-
catch (Exception e)
1230+
var nft = new NFT
12371231
{
1238-
#pragma warning disable IDE0059 // Unnecessary assignment of a value
1239-
metadata = new NFTMetadata { Description = e.Message };
1240-
#pragma warning restore IDE0059 // Unnecessary assignment of a value
1241-
}
1242-
metadata.Id = tokenId.ToString();
1232+
Owner = Constants.ADDRESS_ZERO,
1233+
Type = NFTType.ERC721,
1234+
Supply = 1,
1235+
QuantityOwned = 1
1236+
};
12431237

1244-
var owner = Constants.ADDRESS_ZERO;
12451238
if (fillOwner)
12461239
{
12471240
try
12481241
{
1249-
owner = await contract.ERC721_OwnerOf(tokenId).ConfigureAwait(false);
1242+
nft.Owner = await contract.ERC721_OwnerOf(tokenId).ConfigureAwait(false);
12501243
}
1251-
catch (Exception)
1244+
catch
12521245
{
1253-
owner = Constants.ADDRESS_ZERO;
1246+
nft.Owner = Constants.ADDRESS_ZERO;
12541247
}
12551248
}
12561249

1257-
return new NFT
1250+
#pragma warning disable IDE0059 // Unnecessary assignment of a value
1251+
var nftMetadata = new NFTMetadata();
1252+
#pragma warning restore IDE0059 // Unnecessary assignment of a value
1253+
try
12581254
{
1259-
Metadata = metadata,
1260-
Owner = owner,
1261-
Type = NFTType.ERC721,
1262-
Supply = 1,
1263-
QuantityOwned = 1
1255+
var uri = await contract.ERC721_TokenURI(tokenId).ConfigureAwait(false);
1256+
nftMetadata = await ThirdwebStorage.Download<NFTMetadata>(contract.Client, uri).ConfigureAwait(false);
1257+
}
1258+
catch (Exception e)
1259+
{
1260+
nftMetadata.Description = $"Metadata not found: {e.Message}";
1261+
}
1262+
finally
1263+
{
1264+
nftMetadata.Id = tokenId.ToString();
1265+
}
1266+
1267+
return nft with
1268+
{
1269+
Metadata = nftMetadata
12641270
};
12651271
}
12661272

0 commit comments

Comments
 (0)