Skip to content

Commit 8ccf632

Browse files
committed
Fix NFTMetadata.QuantityOwned for ERC1155
1 parent db1ad6a commit 8ccf632

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

Thirdweb/Thirdweb.Extensions/ThirdwebExtensions.cs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -984,9 +984,17 @@ public static async Task<List<BigInteger>> ERC1155_BalanceOfBatch(this ThirdwebC
984984
throw new ArgumentNullException(nameof(contract));
985985
}
986986

987-
return ownerAddresses == null || tokenIds == null
988-
? throw new ArgumentException("Owner addresses and token IDs must be provided")
989-
: await ThirdwebContract.Read<List<BigInteger>>(contract, "balanceOfBatch", ownerAddresses, tokenIds);
987+
if (ownerAddresses == null || tokenIds == null)
988+
{
989+
throw new ArgumentException("Owner addresses and token IDs must be provided");
990+
}
991+
992+
if (ownerAddresses.Length != tokenIds.Length)
993+
{
994+
throw new ArgumentException("Owner addresses and token IDs must have the same length");
995+
}
996+
997+
return await ThirdwebContract.Read<List<BigInteger>>(contract, "balanceOfBatch", ownerAddresses, tokenIds);
990998
}
991999

9921000
/// <summary>
@@ -1487,19 +1495,21 @@ public static async Task<List<NFT>> ERC1155_GetOwnedNFTs(this ThirdwebContract c
14871495

14881496
var balanceOfBatch = await contract.ERC1155_BalanceOfBatch(ownerArray.ToArray(), tokenIds.ToArray()).ConfigureAwait(false);
14891497

1490-
var ownerNftTasks = new List<Task<NFT>>();
1498+
var ownedNftTasks = new List<Task<NFT>>();
1499+
var ownedBalances = new List<BigInteger>();
14911500
for (var i = 0; i < balanceOfBatch.Count; i++)
14921501
{
14931502
if (balanceOfBatch[i] > 0)
14941503
{
1495-
ownerNftTasks.Add(contract.ERC1155_GetNFT(tokenIds[i]));
1504+
ownedNftTasks.Add(contract.ERC1155_GetNFT(tokenIds[i]));
1505+
ownedBalances.Add(balanceOfBatch[i]);
14961506
}
14971507
}
14981508

1499-
var ownerNfts = await Task.WhenAll(ownerNftTasks).ConfigureAwait(false);
1509+
var ownerNfts = await Task.WhenAll(ownedNftTasks).ConfigureAwait(false);
15001510
for (var i = 0; i < ownerNfts.Length; i++)
15011511
{
1502-
ownerNfts[i].QuantityOwned = balanceOfBatch[i];
1512+
ownerNfts[i].QuantityOwned = ownedBalances[i];
15031513
}
15041514
return ownerNfts.ToList();
15051515
}

0 commit comments

Comments
 (0)