Skip to content

Commit e7e4a30

Browse files
Fix embed for erc20 (#78)
* wip * Fix BigNumber error * Add lock
1 parent 886211f commit e7e4a30

File tree

2 files changed

+89
-47
lines changed

2 files changed

+89
-47
lines changed

src/shared/claim-button-erc20.tsx

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
useAddress,
1818
useClaimConditions,
1919
useClaimIneligibilityReasons,
20+
useTokenSupply,
2021
Web3Button,
2122
} from "@thirdweb-dev/react";
2223
import type { TokenDrop } from "@thirdweb-dev/sdk";
@@ -45,17 +46,35 @@ export const ERC20ClaimButton: React.FC<ClaimButtoProps> = ({
4546

4647
const claimConditions = useClaimConditions(contract);
4748
const activeClaimCondition = useActiveClaimCondition(contract);
49+
4850
const claimIneligibilityReasons = useClaimIneligibilityReasons(contract, {
4951
quantity: debouncedQuantity,
5052
walletAddress: address || "",
5153
});
52-
const numberTotal = useMemo(() => {
53-
return activeClaimCondition.data?.maxQuantity;
54-
}, [activeClaimCondition.data?.maxQuantity]);
54+
55+
const claimedSupply = useTokenSupply(contract);
56+
57+
const totalAvailableSupply = useMemo(() => {
58+
try {
59+
return BigNumber.from(activeClaimCondition.data?.availableSupply || 0);
60+
} catch {
61+
return BigNumber.from(1_000_000_000);
62+
}
63+
}, [activeClaimCondition.data?.availableSupply]);
5564

5665
const numberClaimed = useMemo(() => {
57-
return activeClaimCondition.data?.currentMintSupply;
58-
}, [activeClaimCondition.data]);
66+
return BigNumber.from(claimedSupply.data?.value || 0).toString();
67+
}, [claimedSupply]);
68+
69+
const numberTotal = useMemo(() => {
70+
const n = totalAvailableSupply.add(
71+
BigNumber.from(claimedSupply.data?.value || 0),
72+
);
73+
if (n.gte(1_000_000_000)) {
74+
return "";
75+
}
76+
return n.toString();
77+
}, [totalAvailableSupply, claimedSupply]);
5978

6079
const priceToMint = useMemo(() => {
6180
const bnPrice = BigNumber.from(
@@ -76,10 +95,10 @@ export const ERC20ClaimButton: React.FC<ClaimButtoProps> = ({
7695
let bnMaxClaimable;
7796
try {
7897
bnMaxClaimable = BigNumber.from(
79-
parseFloat(activeClaimCondition.data?.maxQuantity || "0") || 0,
98+
activeClaimCondition.data?.maxQuantity || 0,
8099
);
81100
} catch (e) {
82-
bnMaxClaimable = BigNumber.from(1_000_000_000_000);
101+
bnMaxClaimable = BigNumber.from(1_000_000_000);
83102
}
84103

85104
let perTransactionClaimable;
@@ -88,7 +107,7 @@ export const ERC20ClaimButton: React.FC<ClaimButtoProps> = ({
88107
activeClaimCondition.data?.quantityLimitPerTransaction || 0,
89108
);
90109
} catch (e) {
91-
perTransactionClaimable = BigNumber.from(1_000_000_000_000);
110+
perTransactionClaimable = BigNumber.from(1_000_000_000);
92111
}
93112

94113
if (perTransactionClaimable.lte(bnMaxClaimable)) {
@@ -102,7 +121,7 @@ export const ERC20ClaimButton: React.FC<ClaimButtoProps> = ({
102121
if (snapshotClaimable) {
103122
if (snapshotClaimable === "0") {
104123
// allowed unlimited for the snapshot
105-
bnMaxClaimable = BigNumber.from(1_000_000_000_000);
124+
bnMaxClaimable = BigNumber.from(1_000_000_000);
106125
} else {
107126
try {
108127
bnMaxClaimable = BigNumber.from(snapshotClaimable);
@@ -112,16 +131,23 @@ export const ERC20ClaimButton: React.FC<ClaimButtoProps> = ({
112131
}
113132
}
114133

115-
if (bnMaxClaimable.gte(1_000_000_000_000)) {
116-
return 1_000_000_000_000;
134+
let max;
135+
if (totalAvailableSupply.lt(bnMaxClaimable)) {
136+
max = totalAvailableSupply;
137+
} else {
138+
max = bnMaxClaimable;
117139
}
118140

119-
return bnMaxClaimable.toNumber();
141+
if (max.gte(1_000_000_000)) {
142+
return 1_000_000_000;
143+
}
144+
return max.toNumber();
120145
}, [
121146
activeClaimCondition.data?.maxQuantity,
122147
activeClaimCondition.data?.quantityLimitPerTransaction,
123148
activeClaimCondition.data?.snapshot,
124149
address,
150+
totalAvailableSupply,
125151
]);
126152

127153
const isSoldOut = useMemo(() => {
@@ -292,7 +318,7 @@ export const ERC20ClaimButton: React.FC<ClaimButtoProps> = ({
292318
<Skeleton as="span" isLoaded={!isLoading}>
293319
{isLoading ? "00" : numberClaimed}
294320
</Skeleton>{" "}
295-
/{" "}
321+
{numberTotal !== "" && "/ "}
296322
<Skeleton as="span" isLoaded={!isLoading}>
297323
{isLoading ? "00" : numberTotal}
298324
</Skeleton>{" "}

yarn.lock

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1835,9 +1835,9 @@
18351835
bn.js "^5.2.0"
18361836

18371837
"@metaplex-foundation/mpl-candy-machine@^4.4.1":
1838-
version "4.7.0"
1839-
resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-candy-machine/-/mpl-candy-machine-4.7.0.tgz#5fac140167dcabb2458dd109fc3a7d041ebe3293"
1840-
integrity sha512-5L2HkRHd+ojV4p9REfjyUIQh2HtLFntsGCCOmy6K3pICHGQ/URt1oUwMW/stpwL4C6oEaY1Z8BjcIdDd4LjicA==
1838+
version "4.7.1"
1839+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-candy-machine/-/mpl-candy-machine-4.7.1.tgz#ecf6ebbe96245084c9a186761ecc51c62ce1206f"
1840+
integrity sha512-tBNRAfBE/rYy9pe2aJD4gTFw+pgQ11o3AJjoYGB4+05ow0VjJMSt6kQGzHm2LRPgdLY4diKAq8qHvgsbV5ikNQ==
18411841
dependencies:
18421842
"@metaplex-foundation/beet" "^0.4.0"
18431843
"@metaplex-foundation/beet-solana" "^0.3.0"
@@ -2722,9 +2722,9 @@
27222722
start-server-and-test "^1.14.0"
27232723

27242724
"@solana/wallet-adapter-base@^0.9.2":
2725-
version "0.9.17"
2726-
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-base/-/wallet-adapter-base-0.9.17.tgz#b388fea0ec6da40e23342068a4cfa9be65dc8f63"
2727-
integrity sha512-YEkO04QndfRXb6psznMuRsw2YBHqVGxmuJgQskCHp2DAkHWPDNbKlv+Q4mOD2gfkUNHUMP8sTnwORhsIR3fQjQ==
2725+
version "0.9.18"
2726+
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-base/-/wallet-adapter-base-0.9.18.tgz#9365304a76977b4446a1167b240d588f2c5448d5"
2727+
integrity sha512-5HQFytLmb64j1Nzc6dwddZx+IUePN/PYqVMyf/ok7fN3z8Vw3EIFS8b+RFfBpj4HWbc2kqv5fpnLlaAH7q67pA==
27282728
dependencies:
27292729
eventemitter3 "^4.0.0"
27302730

@@ -2752,9 +2752,9 @@
27522752
tweetnacl "^1.0.3"
27532753

27542754
"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.35.1", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.47.3", "@solana/web3.js@^1.50.1", "@solana/web3.js@^1.56.2":
2755-
version "1.63.1"
2756-
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.63.1.tgz#88a19a17f5f4aada73ad70a94044c1067cab2b4d"
2757-
integrity sha512-wgEdGVK5FTS2zENxbcGSvKpGZ0jDS6BUdGu8Gn6ns0CzgJkK83u4ip3THSnBPEQ5i/jrqukg998BwV1H67+qiQ==
2755+
version "1.64.0"
2756+
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.64.0.tgz#b7f5a976976039a0161242e94d6e1224ab5d30f9"
2757+
integrity sha512-AcFaoy48GxSmzBryVwB88C/UPJd/UQa+nFrO/uPc8ww6RCjanZY2vEZxdfTZub+q1NMUckwXpPwF32jJLe7SPA==
27582758
dependencies:
27592759
"@babel/runtime" "^7.12.5"
27602760
"@noble/ed25519" "^1.7.0"
@@ -2924,9 +2924,9 @@
29242924
integrity sha512-PiQjdRcAUBlu3poc4g6dN9KvjTgYsA1Vi+B/IgryptCgcJeMY4cldMabKCgPaCg9dPVpUq4O+SOM00P6mBNvGw==
29252925

29262926
"@thirdweb-dev/react@^3.3.0-nightly-df74340":
2927-
version "3.3.0-nightly-df74340"
2928-
resolved "https://registry.yarnpkg.com/@thirdweb-dev/react/-/react-3.3.0-nightly-df74340.tgz#608f9b56b831760a3a50a9e922631e76736c5a9a"
2929-
integrity sha512-Pep26ox3jiJ/Ii4v7IDP1Ij6Ux8a5E3ckoJ2mi1VkMJSACqEMZY88Cpx97FZUodyjIOFfQUfMJ8uSYWEiVi15A==
2927+
version "3.3.0"
2928+
resolved "https://registry.yarnpkg.com/@thirdweb-dev/react/-/react-3.3.0.tgz#6d4aefb40dd1450c79614d2bb8d149ff9f06ef2a"
2929+
integrity sha512-Px/G9Gn29R9FIQcZWeg1yhINnGGqPZ0C9fZo1qQ5YCIIl8MHMDBmYyHy+UOg5x++OkqCA69oWF3qdCS3cy2/cg==
29302930
dependencies:
29312931
"@emotion/react" "^11.10.0"
29322932
"@emotion/styled" "^11.10.0"
@@ -2948,17 +2948,17 @@
29482948
wagmi "^0.2.28"
29492949

29502950
"@thirdweb-dev/sdk@^3.3.0-nightly-df74340":
2951-
version "3.3.0-nightly-df74340"
2952-
resolved "https://registry.yarnpkg.com/@thirdweb-dev/sdk/-/sdk-3.3.0-nightly-df74340.tgz#e003ad21e29ca4dd62bf5cf81757a6c1a5779fb9"
2953-
integrity sha512-ZRoYLx6v2Ao2Mowm5c9P6uRkgzVZZskUSvuRz5Ec4DegZIjA5Olwe3y/j5FyGikej6iHoJeUEIg5myZ3UZ6NTw==
2951+
version "3.3.0"
2952+
resolved "https://registry.yarnpkg.com/@thirdweb-dev/sdk/-/sdk-3.3.0.tgz#91fb6196760611a147e12a5520278139132d7420"
2953+
integrity sha512-rVrcrLoCpQFwg4jh6/YN+S2eeplWoCZO3u/W4scVPgqrdBm8HIL8nWqbeVi/lY7gPB+9SHv6854gPvsOqPWoAw==
29542954
dependencies:
29552955
"@metaplex-foundation/js" "^0.15.0"
29562956
"@metaplex-foundation/mpl-token-metadata" "^2.2.2"
29572957
"@project-serum/anchor" "^0.25.0"
29582958
"@solana/spl-token" "^0.2.0"
29592959
"@solana/web3.js" "^1.50.1"
29602960
"@thirdweb-dev/contracts-js" "^1.1.9"
2961-
"@thirdweb-dev/storage" "^1.0.4"
2961+
"@thirdweb-dev/storage" "^1.0.5"
29622962
bn.js "^5.2.1"
29632963
bs58 "^5.0.0"
29642964
cbor-x "^1.4.1"
@@ -2981,6 +2981,15 @@
29812981
form-data "^4.0.0"
29822982
uuid "^9.0.0"
29832983

2984+
"@thirdweb-dev/storage@^1.0.5":
2985+
version "1.0.5"
2986+
resolved "https://registry.yarnpkg.com/@thirdweb-dev/storage/-/storage-1.0.5.tgz#fb44d1f748e14db1c4661e2264f0541eaac3976f"
2987+
integrity sha512-9pRp97nGiAN78carYHmLmomB9oPkXUraA6oU+pzzygSr5kOtoeIIPILGZW2XK8rPA8w0y4LiThFOaa0dUyyVkQ==
2988+
dependencies:
2989+
cross-fetch "^3.1.5"
2990+
form-data "^4.0.0"
2991+
uuid "^9.0.0"
2992+
29842993
"@trysound/[email protected]":
29852994
version "0.2.0"
29862995
resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
@@ -3559,9 +3568,9 @@ algo-msgpack-with-bigint@^2.1.1:
35593568
integrity sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==
35603569

35613570
algosdk@^1.13.1:
3562-
version "1.21.0"
3563-
resolved "https://registry.yarnpkg.com/algosdk/-/algosdk-1.21.0.tgz#2e11fe5eb719ed932659c1472baf344bf4bfffbf"
3564-
integrity sha512-pgHzEExFn8hjcDphQYo+0Pi6TLWZOyXPcxjisldd6ZaaF0cNsB6C97n66OXi0gtL3mvMIgD53SLBfzy1u9YM+g==
3571+
version "1.22.0"
3572+
resolved "https://registry.yarnpkg.com/algosdk/-/algosdk-1.22.0.tgz#7d38232883a4de3bb9403fb9592cdaf0785c8b35"
3573+
integrity sha512-oj2G1ucLyqfTAPM9iIWiSfU0Jmwx1gaafqlC2RaWcwHx86cwnFTwEf/haFQ9yoirkIozVlZYTYtv+Ltkj3il8w==
35653574
dependencies:
35663575
algo-msgpack-with-bigint "^2.1.1"
35673576
buffer "^6.0.2"
@@ -4619,23 +4628,23 @@ csv-generate@^4.2.0:
46194628
resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-4.2.0.tgz#06e23634415c1d5a7cb111102bbea868b0857e6f"
46204629
integrity sha512-zlIESlGQaYqIhNYwBN2pj5KXNMYbAXZYMOgNoVSoYV8MQyGZwcNWX+kx5LHxocp+zQDqzSgeKh+e+AZs+nCq4Q==
46214630

4622-
csv-parse@^5.3.0:
4623-
version "5.3.0"
4624-
resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.3.0.tgz#85cc02fc9d1c89bd1b02e69069c960f8b8064322"
4625-
integrity sha512-UXJCGwvJ2fep39purtAn27OUYmxB1JQto+zhZ4QlJpzsirtSFbzLvip1aIgziqNdZp/TptvsKEV5BZSxe10/DQ==
4631+
csv-parse@^5.3.1:
4632+
version "5.3.1"
4633+
resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.3.1.tgz#78b028eb2d2a3e16e62ee8abe710ff7a0b1f8b3b"
4634+
integrity sha512-R4Hv6eGJNzgcKdThZ6XORbSQ873HVcNke74QIq+LbwpT90LaZ8Xzl7KKiuIP16xq/P7ofzRt0h7S0xm+fVScsw==
46264635

46274636
csv-stringify@^6.2.0:
46284637
version "6.2.0"
46294638
resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-6.2.0.tgz#f89881e8f61293bf5af11f421266b5da7b744030"
46304639
integrity sha512-dcUbQLRTTDcgQxgEU8V9IctkaCwHZjZfzUZ5ZB3RY8Y+pXtdtl5iVQHfGzANytFFkRKanYzBXrkfpNdGR7eviA==
46314640

46324641
csv@^6.0.5:
4633-
version "6.2.0"
4634-
resolved "https://registry.yarnpkg.com/csv/-/csv-6.2.0.tgz#edab9979067fe9bb4c6a4381aaebba96ef5b3017"
4635-
integrity sha512-yT7dkCsJLJ36NUW0d0ei7parOcUCx/QVkK77puwA/rF4bMciTB5Kf+wuegL+7zh8s6revFM+BFQ2h+U2k4jgBQ==
4642+
version "6.2.1"
4643+
resolved "https://registry.yarnpkg.com/csv/-/csv-6.2.1.tgz#2f26b81b410f9464a98e942f249da16cd9c1eea2"
4644+
integrity sha512-qTEPklcIZkJGaB/j6/2qNXZbKgWSXPVMyRnZvRcb1F7MGyvLqJexlZlbJ3NQkgmUoAeScZhsRHjlZEgImBfCYQ==
46364645
dependencies:
46374646
csv-generate "^4.2.0"
4638-
csv-parse "^5.3.0"
4647+
csv-parse "^5.3.1"
46394648
csv-stringify "^6.2.0"
46404649
stream-transform "^3.2.0"
46414650

@@ -6585,9 +6594,9 @@ jayson@^3.4.4:
65856594
ws "^7.4.5"
65866595

65876596
joi@^17.4.0:
6588-
version "17.6.2"
6589-
resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.2.tgz#00ac55ce6495596545cce45309f38738cfbd7cd3"
6590-
integrity sha512-+gqqdh1xc1wb+Lor0J9toqgeReyDOCqOdG8QSdRcEvwrcRiFQZneUCGKjFjuyBWUb3uaFOgY56yMaZ5FIc+H4w==
6597+
version "17.6.3"
6598+
resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.3.tgz#b8e9e143f0188884563e6de50f8b23ddcd3cb2f5"
6599+
integrity sha512-YlQsIaS9MHYekzf1Qe11LjTkNzx9qhYluK3172z38RxYoAUf82XMX1p1DG1H4Wtk2ED/vPdSn9OggqtDu+aTow==
65916600
dependencies:
65926601
"@hapi/hoek" "^9.0.0"
65936602
"@hapi/topo" "^5.0.0"
@@ -8062,7 +8071,14 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
80628071
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
80638072
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
80648073

8065-
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
8074+
semver@^7.3.2:
8075+
version "7.3.8"
8076+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
8077+
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
8078+
dependencies:
8079+
lru-cache "^6.0.0"
8080+
8081+
semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
80668082
version "7.3.7"
80678083
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
80688084
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
@@ -9273,9 +9289,9 @@ yaml@^1.10.0:
92739289
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
92749290

92759291
yaml@^2.1.1:
9276-
version "2.1.2"
9277-
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.2.tgz#eb0f535eb309811b60276a9cc8c02af4355db420"
9278-
integrity sha512-VSdf2/K3FqAetooKQv45Hcu6sA00aDgWZeGcG6V9IYJnVLTnb6988Tie79K5nx2vK7cEpf+yW8Oy+7iPAbdiHA==
9292+
version "2.1.3"
9293+
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.3.tgz#9b3a4c8aff9821b696275c79a8bee8399d945207"
9294+
integrity sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==
92799295

92809296
yargs-parser@^13.1.2:
92819297
version "13.1.2"

0 commit comments

Comments
 (0)