@rhinestone/deposit-modal 0.1.31 → 0.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DepositModalReown-S7HER5HU.mjs → DepositModalReown-7ZO7HUN3.mjs} +9 -5
- package/dist/{DepositModalReown-N7GCYZF7.cjs → DepositModalReown-VNKZT5A7.cjs} +12 -8
- package/dist/{WithdrawModalReown-DMDRLYTE.mjs → WithdrawModalReown-PMPLUJBE.mjs} +9 -5
- package/dist/{WithdrawModalReown-DJCJ5U7E.cjs → WithdrawModalReown-YP4PEERJ.cjs} +12 -8
- package/dist/{chunk-SZ35G2DT.cjs → chunk-4WXSBBHQ.cjs} +101 -107
- package/dist/{chunk-3ICS43XC.mjs → chunk-C6I5TFSL.mjs} +4 -0
- package/dist/{chunk-EVU7M7A6.mjs → chunk-DLFUXLAM.mjs} +14 -13
- package/dist/{chunk-SLI5FHTT.mjs → chunk-ECLVABYN.mjs} +34 -40
- package/dist/{chunk-AWFJFSPH.mjs → chunk-HNDZ6G5K.mjs} +166 -249
- package/dist/{chunk-PE6OK3FH.cjs → chunk-S4UBVD3H.cjs} +5 -1
- package/dist/{chunk-MU2BOEDN.cjs → chunk-SIGTZB3C.cjs} +244 -327
- package/dist/{chunk-CS6UIMCF.mjs → chunk-SJEIKMVO.mjs} +10 -2
- package/dist/{chunk-VKQA3FO3.cjs → chunk-V7I5T4SW.cjs} +9 -1
- package/dist/{chunk-G2RDCQHL.cjs → chunk-YIHOACM3.cjs} +38 -37
- package/dist/constants.cjs +2 -2
- package/dist/constants.mjs +1 -1
- package/dist/deposit.cjs +4 -4
- package/dist/deposit.d.cts +2 -2
- package/dist/deposit.d.ts +2 -2
- package/dist/deposit.mjs +3 -3
- package/dist/index.cjs +5 -5
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +4 -4
- package/dist/reown.cjs +5 -5
- package/dist/reown.d.cts +1 -1
- package/dist/reown.d.ts +1 -1
- package/dist/reown.mjs +4 -4
- package/dist/{types-DTBfMH0p.d.ts → types-Bp2n2RQ3.d.ts} +0 -1
- package/dist/{types-DELv717e.d.cts → types-CIaQPR6F.d.cts} +0 -1
- package/dist/withdraw.cjs +4 -4
- package/dist/withdraw.d.cts +2 -2
- package/dist/withdraw.d.ts +2 -2
- package/dist/withdraw.mjs +3 -3
- package/package.json +1 -1
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
portfolioToAssets,
|
|
22
22
|
saveSessionOwnerToStorage,
|
|
23
23
|
tokenFormatter
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-DLFUXLAM.mjs";
|
|
25
25
|
import {
|
|
26
26
|
DEFAULT_BACKEND_URL,
|
|
27
27
|
DEFAULT_SIGNER_ADDRESS,
|
|
@@ -35,14 +35,15 @@ import {
|
|
|
35
35
|
getTargetTokenSymbolsForChain,
|
|
36
36
|
getTokenAddress,
|
|
37
37
|
getTokenIcon,
|
|
38
|
-
getTokenSymbol
|
|
39
|
-
|
|
38
|
+
getTokenSymbol,
|
|
39
|
+
isStablecoinSymbol
|
|
40
|
+
} from "./chunk-C6I5TFSL.mjs";
|
|
40
41
|
|
|
41
42
|
// src/DepositModal.tsx
|
|
42
43
|
import {
|
|
43
|
-
useMemo as
|
|
44
|
-
useEffect as
|
|
45
|
-
useRef as
|
|
44
|
+
useMemo as useMemo6,
|
|
45
|
+
useEffect as useEffect8,
|
|
46
|
+
useRef as useRef6,
|
|
46
47
|
useState as useState8,
|
|
47
48
|
useCallback as useCallback4,
|
|
48
49
|
lazy,
|
|
@@ -50,7 +51,7 @@ import {
|
|
|
50
51
|
} from "react";
|
|
51
52
|
|
|
52
53
|
// src/DepositFlow.tsx
|
|
53
|
-
import { useState as useState7, useCallback as useCallback3, useMemo as
|
|
54
|
+
import { useState as useState7, useCallback as useCallback3, useMemo as useMemo5, useEffect as useEffect7, useRef as useRef5 } from "react";
|
|
54
55
|
|
|
55
56
|
// src/components/steps/SetupStep.tsx
|
|
56
57
|
import { useState, useEffect, useRef, useCallback } from "react";
|
|
@@ -249,7 +250,8 @@ function AssetSelectStep({
|
|
|
249
250
|
defaultSourceToken,
|
|
250
251
|
service,
|
|
251
252
|
onContinue,
|
|
252
|
-
onTotalBalanceComputed
|
|
253
|
+
onTotalBalanceComputed,
|
|
254
|
+
onAssetsLoaded
|
|
253
255
|
}) {
|
|
254
256
|
const [assets, setAssets] = useState2([]);
|
|
255
257
|
const [selectedAssetId, setSelectedAssetId] = useState2(null);
|
|
@@ -316,7 +318,8 @@ function AssetSelectStep({
|
|
|
316
318
|
0
|
|
317
319
|
);
|
|
318
320
|
onTotalBalanceComputed?.(total);
|
|
319
|
-
|
|
321
|
+
if (assets.length > 0) onAssetsLoaded?.(assets);
|
|
322
|
+
}, [assets, onTotalBalanceComputed, onAssetsLoaded]);
|
|
320
323
|
const rows = useMemo(() => {
|
|
321
324
|
return assets.filter((a) => {
|
|
322
325
|
try {
|
|
@@ -507,9 +510,9 @@ function mergeAssets(existing, incoming) {
|
|
|
507
510
|
}
|
|
508
511
|
|
|
509
512
|
// src/components/steps/AmountStep.tsx
|
|
510
|
-
import { useEffect as useEffect3, useMemo as useMemo2,
|
|
513
|
+
import { useEffect as useEffect3, useMemo as useMemo2, useRef as useRef2, useState as useState3 } from "react";
|
|
511
514
|
import { erc20Abi, formatUnits as formatUnits2, parseUnits } from "viem";
|
|
512
|
-
import {
|
|
515
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
513
516
|
function AmountStep({
|
|
514
517
|
walletClient,
|
|
515
518
|
publicClient,
|
|
@@ -533,6 +536,8 @@ function AmountStep({
|
|
|
533
536
|
const chainMismatch = Boolean(
|
|
534
537
|
walletClient?.chain?.id && walletClient.chain.id !== asset.chainId
|
|
535
538
|
);
|
|
539
|
+
const targetSymbol = getTokenSymbol(targetToken, targetChain);
|
|
540
|
+
const isSourceStablecoin = isStablecoinSymbol(asset.symbol);
|
|
536
541
|
const tokenPriceUsd = useMemo2(() => {
|
|
537
542
|
if (tokenPriceUsdOverride !== void 0 && tokenPriceUsdOverride > 0)
|
|
538
543
|
return tokenPriceUsdOverride;
|
|
@@ -581,26 +586,24 @@ function AmountStep({
|
|
|
581
586
|
hasAttemptedSwitch.current = true;
|
|
582
587
|
setIsSwitching(true);
|
|
583
588
|
switchChain(asset.chainId).catch((err) => {
|
|
584
|
-
const
|
|
585
|
-
setError(
|
|
589
|
+
const raw = err instanceof Error ? err.message : "Failed to switch chain";
|
|
590
|
+
setError(formatUserError(raw));
|
|
586
591
|
}).finally(() => {
|
|
587
592
|
setIsSwitching(false);
|
|
588
593
|
});
|
|
589
594
|
}
|
|
590
595
|
}, [chainMismatch, switchChain, asset.chainId]);
|
|
596
|
+
useEffect3(() => {
|
|
597
|
+
hasAttemptedSwitch.current = false;
|
|
598
|
+
}, [asset.chainId]);
|
|
591
599
|
useEffect3(() => {
|
|
592
600
|
if (defaultAmount && !amount) {
|
|
593
601
|
const parsed = Number(defaultAmount);
|
|
594
602
|
if (Number.isFinite(parsed) && parsed > 0) {
|
|
595
|
-
|
|
596
|
-
const usdValue = parsed * tokenPriceUsd;
|
|
597
|
-
setAmount(usdValue.toFixed(2));
|
|
598
|
-
} else {
|
|
599
|
-
setAmount(parsed.toString());
|
|
600
|
-
}
|
|
603
|
+
setAmount(parsed.toString());
|
|
601
604
|
}
|
|
602
605
|
}
|
|
603
|
-
}, [defaultAmount,
|
|
606
|
+
}, [defaultAmount, amount]);
|
|
604
607
|
const balanceUsd = useMemo2(() => {
|
|
605
608
|
if (balance === null || tokenPriceUsd === null) return null;
|
|
606
609
|
try {
|
|
@@ -625,36 +628,24 @@ function AmountStep({
|
|
|
625
628
|
return "...";
|
|
626
629
|
}
|
|
627
630
|
}, [balance, asset.decimals]);
|
|
628
|
-
const tokenAmount = useMemo2(() => {
|
|
629
|
-
if (!amount) return null;
|
|
630
|
-
if (hasPricing) {
|
|
631
|
-
const usd = Number(amount);
|
|
632
|
-
if (!Number.isFinite(usd) || usd <= 0) return null;
|
|
633
|
-
return usd / tokenPriceUsd;
|
|
634
|
-
}
|
|
635
|
-
const val = Number(amount);
|
|
636
|
-
return Number.isFinite(val) && val > 0 ? val : null;
|
|
637
|
-
}, [amount, tokenPriceUsd, hasPricing]);
|
|
638
|
-
const formattedTokenAmount = useMemo2(() => {
|
|
639
|
-
if (tokenAmount === null) return "0.00";
|
|
640
|
-
return tokenFormatter.format(tokenAmount);
|
|
641
|
-
}, [tokenAmount]);
|
|
642
|
-
const targetSymbol = getTokenSymbol(targetToken, targetChain);
|
|
643
631
|
const handlePresetClick = (percentage) => {
|
|
644
632
|
if (balance === null) return;
|
|
645
|
-
|
|
646
|
-
const
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
setAmount(value.toString());
|
|
654
|
-
}
|
|
655
|
-
} catch {
|
|
656
|
-
return;
|
|
633
|
+
try {
|
|
634
|
+
const balanceUnits = Number(formatUnits2(balance, asset.decimals));
|
|
635
|
+
if (!Number.isFinite(balanceUnits)) return;
|
|
636
|
+
let value;
|
|
637
|
+
if (isSourceStablecoin || !hasPricing) {
|
|
638
|
+
value = balanceUnits * percentage / 100;
|
|
639
|
+
} else {
|
|
640
|
+
value = (balanceUsd ?? 0) * percentage / 100;
|
|
657
641
|
}
|
|
642
|
+
const maxDecimals = 3;
|
|
643
|
+
const factor = 10 ** maxDecimals;
|
|
644
|
+
const truncated = Math.floor(value * factor) / factor;
|
|
645
|
+
const formatted = truncated.toFixed(maxDecimals).replace(/\.?0+$/, "");
|
|
646
|
+
setAmount(formatted);
|
|
647
|
+
} catch {
|
|
648
|
+
return;
|
|
658
649
|
}
|
|
659
650
|
if (error) setError(null);
|
|
660
651
|
};
|
|
@@ -664,24 +655,28 @@ function AmountStep({
|
|
|
664
655
|
setError("Please enter a valid amount");
|
|
665
656
|
return;
|
|
666
657
|
}
|
|
667
|
-
let
|
|
658
|
+
let sourceAmount;
|
|
659
|
+
if (isSourceStablecoin || !hasPricing) {
|
|
660
|
+
sourceAmount = numericAmount;
|
|
661
|
+
} else {
|
|
662
|
+
sourceAmount = numericAmount / tokenPriceUsd;
|
|
663
|
+
}
|
|
668
664
|
if (hasPricing) {
|
|
669
|
-
|
|
665
|
+
const usdValue = numericAmount;
|
|
666
|
+
if (uiConfig?.maxDepositUsd && usdValue > uiConfig.maxDepositUsd) {
|
|
670
667
|
setError(
|
|
671
668
|
`Maximum deposit is ${currencyFormatter.format(uiConfig.maxDepositUsd)}`
|
|
672
669
|
);
|
|
673
670
|
return;
|
|
674
671
|
}
|
|
675
|
-
if (uiConfig?.minDepositUsd &&
|
|
672
|
+
if (uiConfig?.minDepositUsd && usdValue < uiConfig.minDepositUsd) {
|
|
676
673
|
setError(
|
|
677
674
|
`Minimum deposit is ${currencyFormatter.format(uiConfig.minDepositUsd)}`
|
|
678
675
|
);
|
|
679
676
|
return;
|
|
680
677
|
}
|
|
681
|
-
tokenAmountStr = (numericAmount / tokenPriceUsd).toString();
|
|
682
|
-
} else {
|
|
683
|
-
tokenAmountStr = numericAmount.toString();
|
|
684
678
|
}
|
|
679
|
+
const tokenAmountStr = sourceAmount.toString();
|
|
685
680
|
let amountInUnits;
|
|
686
681
|
try {
|
|
687
682
|
amountInUnits = parseUnits(tokenAmountStr, asset.decimals);
|
|
@@ -694,24 +689,12 @@ function AmountStep({
|
|
|
694
689
|
return;
|
|
695
690
|
}
|
|
696
691
|
setError(null);
|
|
697
|
-
onContinue(tokenAmountStr, balance ?? void 0);
|
|
698
|
-
};
|
|
699
|
-
const handleSwitch = async () => {
|
|
700
|
-
if (!asset.chainId || !switchChain) return;
|
|
701
|
-
setIsSwitching(true);
|
|
702
|
-
try {
|
|
703
|
-
await switchChain(asset.chainId);
|
|
704
|
-
} catch (err) {
|
|
705
|
-
const message = err instanceof Error ? err.message : "Failed to switch chain";
|
|
706
|
-
setError(message);
|
|
707
|
-
} finally {
|
|
708
|
-
setIsSwitching(false);
|
|
709
|
-
}
|
|
692
|
+
onContinue(tokenAmountStr, amount, balance ?? void 0);
|
|
710
693
|
};
|
|
711
694
|
return /* @__PURE__ */ jsxs3("div", { className: "rs-step", children: [
|
|
712
695
|
/* @__PURE__ */ jsxs3("div", { className: "rs-step-body", style: { paddingTop: 0 }, children: [
|
|
713
696
|
/* @__PURE__ */ jsxs3("div", { className: "rs-amount-display", children: [
|
|
714
|
-
/* @__PURE__ */ jsx3("div", { className: "rs-amount-input-wrapper", children:
|
|
697
|
+
/* @__PURE__ */ jsx3("div", { className: "rs-amount-input-wrapper", children: /* @__PURE__ */ jsx3(
|
|
715
698
|
"input",
|
|
716
699
|
{
|
|
717
700
|
type: "text",
|
|
@@ -728,50 +711,19 @@ function AmountStep({
|
|
|
728
711
|
},
|
|
729
712
|
autoFocus: true
|
|
730
713
|
}
|
|
731
|
-
) : /* @__PURE__ */ jsx3(
|
|
732
|
-
"input",
|
|
733
|
-
{
|
|
734
|
-
type: "text",
|
|
735
|
-
inputMode: "decimal",
|
|
736
|
-
className: "rs-amount-input-large",
|
|
737
|
-
placeholder: `0.00 ${asset.symbol}`,
|
|
738
|
-
value: amount,
|
|
739
|
-
onChange: (e) => {
|
|
740
|
-
const raw = e.target.value.replace(/[^0-9.]/g, "");
|
|
741
|
-
const parts = raw.split(".");
|
|
742
|
-
if (parts.length > 2) return;
|
|
743
|
-
setAmount(raw);
|
|
744
|
-
if (error) setError(null);
|
|
745
|
-
},
|
|
746
|
-
autoFocus: true
|
|
747
|
-
}
|
|
748
714
|
) }),
|
|
749
|
-
(
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
"div",
|
|
756
|
-
{
|
|
757
|
-
className: "rs-amount-token-value",
|
|
758
|
-
style: { color: "var(--rs-muted-foreground)" },
|
|
759
|
-
children: "Price unavailable"
|
|
760
|
-
}
|
|
761
|
-
),
|
|
762
|
-
/* @__PURE__ */ jsx3("div", { className: "rs-amount-available", children: /* @__PURE__ */ jsxs3("span", { className: "rs-amount-available-value", children: [
|
|
763
|
-
formattedBalance,
|
|
715
|
+
!isSourceStablecoin && /* @__PURE__ */ jsx3("div", { className: "rs-amount-available", children: /* @__PURE__ */ jsxs3("span", { className: "rs-amount-available-value", children: [
|
|
716
|
+
formattedBalance,
|
|
717
|
+
" ",
|
|
718
|
+
asset.symbol,
|
|
719
|
+
" available",
|
|
720
|
+
hasPricing && balanceUsd !== null && /* @__PURE__ */ jsxs3("span", { style: { color: "var(--rs-muted-foreground)" }, children: [
|
|
764
721
|
" ",
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
currencyFormatter.format(balanceUsd),
|
|
771
|
-
")"
|
|
772
|
-
] })
|
|
773
|
-
] }) })
|
|
774
|
-
] })
|
|
722
|
+
"(",
|
|
723
|
+
currencyFormatter.format(balanceUsd),
|
|
724
|
+
")"
|
|
725
|
+
] })
|
|
726
|
+
] }) })
|
|
775
727
|
] }),
|
|
776
728
|
/* @__PURE__ */ jsx3(
|
|
777
729
|
"div",
|
|
@@ -904,23 +856,7 @@ function AmountStep({
|
|
|
904
856
|
}
|
|
905
857
|
)
|
|
906
858
|
] }),
|
|
907
|
-
chainMismatch && /* @__PURE__ */
|
|
908
|
-
/* @__PURE__ */ jsxs3("div", { className: "rs-chain-switch-text", children: [
|
|
909
|
-
"Switch your wallet to ",
|
|
910
|
-
getChainName(asset.chainId),
|
|
911
|
-
" to continue."
|
|
912
|
-
] }),
|
|
913
|
-
switchChain && /* @__PURE__ */ jsx3(
|
|
914
|
-
Button,
|
|
915
|
-
{
|
|
916
|
-
variant: "outline",
|
|
917
|
-
size: "small",
|
|
918
|
-
loading: isSwitching,
|
|
919
|
-
onClick: handleSwitch,
|
|
920
|
-
children: "Switch"
|
|
921
|
-
}
|
|
922
|
-
)
|
|
923
|
-
] }),
|
|
859
|
+
chainMismatch && /* @__PURE__ */ jsx3("div", { className: "rs-chain-switch", style: { marginTop: 16 }, children: /* @__PURE__ */ jsx3("div", { className: "rs-chain-switch-text", children: isSwitching ? `Switching to ${getChainName(asset.chainId)}...` : `Switch your wallet to ${getChainName(asset.chainId)} to continue.` }) }),
|
|
924
860
|
error && /* @__PURE__ */ jsxs3("div", { className: "rs-amount-error", children: [
|
|
925
861
|
/* @__PURE__ */ jsx3(
|
|
926
862
|
"svg",
|
|
@@ -957,10 +893,9 @@ function AmountStep({
|
|
|
957
893
|
}
|
|
958
894
|
|
|
959
895
|
// src/components/steps/ConfirmStep.tsx
|
|
960
|
-
import {
|
|
961
|
-
import { erc20Abi as erc20Abi2,
|
|
896
|
+
import { useEffect as useEffect4, useRef as useRef3, useState as useState4 } from "react";
|
|
897
|
+
import { erc20Abi as erc20Abi2, parseUnits as parseUnits2 } from "viem";
|
|
962
898
|
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
963
|
-
var STABLECOIN_SYMBOLS = /* @__PURE__ */ new Set(["USDC", "USDT", "DAI"]);
|
|
964
899
|
function ConfirmStep({
|
|
965
900
|
walletClient,
|
|
966
901
|
address,
|
|
@@ -968,6 +903,8 @@ function ConfirmStep({
|
|
|
968
903
|
recipient,
|
|
969
904
|
asset,
|
|
970
905
|
amount,
|
|
906
|
+
targetAmount,
|
|
907
|
+
targetTokenPriceUsd,
|
|
971
908
|
balance,
|
|
972
909
|
targetChain,
|
|
973
910
|
targetToken,
|
|
@@ -979,55 +916,37 @@ function ConfirmStep({
|
|
|
979
916
|
const [isSubmitting, setIsSubmitting] = useState4(false);
|
|
980
917
|
const [error, setError] = useState4(null);
|
|
981
918
|
const [isSwitching, setIsSwitching] = useState4(false);
|
|
919
|
+
const hasAttemptedSwitch = useRef3(false);
|
|
982
920
|
const chainMismatch = walletClient?.chain?.id && walletClient.chain.id !== asset.chainId;
|
|
983
921
|
const sameRoute = targetChain === asset.chainId && targetToken.toLowerCase() === asset.token.toLowerCase();
|
|
984
922
|
const targetSymbol = sameRoute ? asset.symbol : getTokenSymbol(targetToken, targetChain);
|
|
985
|
-
const
|
|
986
|
-
const
|
|
987
|
-
if (
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
return asset.balanceUsd / balanceUnits;
|
|
994
|
-
} catch {
|
|
995
|
-
return null;
|
|
996
|
-
}
|
|
997
|
-
}, [asset.balanceUsd, asset.balance, asset.decimals]);
|
|
998
|
-
const amountUsd = useMemo3(() => {
|
|
999
|
-
if (!amount || tokenPriceUsd === null) return null;
|
|
1000
|
-
const parsed = Number(amount);
|
|
1001
|
-
if (!Number.isFinite(parsed) || parsed <= 0) return null;
|
|
1002
|
-
return parsed * tokenPriceUsd;
|
|
1003
|
-
}, [amount, tokenPriceUsd]);
|
|
1004
|
-
const targetTokenPriceUsd = useMemo3(() => {
|
|
1005
|
-
const targetSym = targetSymbol.toUpperCase();
|
|
1006
|
-
const sourceSym = asset.symbol.toUpperCase();
|
|
1007
|
-
if (STABLECOIN_SYMBOLS.has(targetSym)) return 1;
|
|
1008
|
-
if (targetSym === sourceSym && tokenPriceUsd !== null) return tokenPriceUsd;
|
|
1009
|
-
return null;
|
|
1010
|
-
}, [targetSymbol, asset.symbol, tokenPriceUsd]);
|
|
1011
|
-
const receiveAmountUsd = useMemo3(() => {
|
|
1012
|
-
if (amountUsd === null) return null;
|
|
1013
|
-
return sameRoute ? amountUsd : amountUsd * 0.99;
|
|
1014
|
-
}, [amountUsd, sameRoute]);
|
|
1015
|
-
const receiveTokenAmount = useMemo3(() => {
|
|
1016
|
-
if (sameRoute) {
|
|
1017
|
-
const parsed = Number(amount);
|
|
1018
|
-
return Number.isFinite(parsed) ? parsed : null;
|
|
923
|
+
const formattedSendAmount = amount && !Number.isNaN(Number(amount)) ? Number(amount).toLocaleString("en-US", { maximumFractionDigits: 6 }) : "0";
|
|
924
|
+
const formattedReceiveAmount = (() => {
|
|
925
|
+
if (sameRoute) return formattedSendAmount;
|
|
926
|
+
const dollarValue = Number(targetAmount);
|
|
927
|
+
if (!Number.isFinite(dollarValue) || dollarValue <= 0) return formattedSendAmount;
|
|
928
|
+
if (targetTokenPriceUsd !== null && targetTokenPriceUsd > 0) {
|
|
929
|
+
const tokenAmount = dollarValue / targetTokenPriceUsd;
|
|
930
|
+
return tokenAmount.toLocaleString("en-US", { maximumFractionDigits: 6 });
|
|
1019
931
|
}
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
return receiveAmountUsd / targetTokenPriceUsd;
|
|
1023
|
-
}, [sameRoute, amount, receiveAmountUsd, targetTokenPriceUsd]);
|
|
1024
|
-
const formattedReceiveAmount = useMemo3(() => {
|
|
1025
|
-
if (receiveTokenAmount === null) return formattedAmount;
|
|
1026
|
-
return receiveTokenAmount.toLocaleString("en-US", {
|
|
1027
|
-
maximumFractionDigits: 6
|
|
1028
|
-
});
|
|
1029
|
-
}, [receiveTokenAmount, formattedAmount]);
|
|
932
|
+
return formattedSendAmount;
|
|
933
|
+
})();
|
|
1030
934
|
const receiveAmount = sameRoute ? formattedReceiveAmount : `~ ${formattedReceiveAmount}`;
|
|
935
|
+
useEffect4(() => {
|
|
936
|
+
if (chainMismatch && switchChain && !hasAttemptedSwitch.current) {
|
|
937
|
+
hasAttemptedSwitch.current = true;
|
|
938
|
+
setIsSwitching(true);
|
|
939
|
+
switchChain(asset.chainId).catch((err) => {
|
|
940
|
+
const raw = err instanceof Error ? err.message : "Failed to switch chain";
|
|
941
|
+
setError(formatUserError(raw));
|
|
942
|
+
}).finally(() => {
|
|
943
|
+
setIsSwitching(false);
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
}, [chainMismatch, switchChain, asset.chainId]);
|
|
947
|
+
useEffect4(() => {
|
|
948
|
+
hasAttemptedSwitch.current = false;
|
|
949
|
+
}, [asset.chainId]);
|
|
1031
950
|
const handleConfirm = async () => {
|
|
1032
951
|
if (!address || !walletClient) {
|
|
1033
952
|
setError("Wallet not connected");
|
|
@@ -1086,18 +1005,6 @@ function ConfirmStep({
|
|
|
1086
1005
|
setIsSubmitting(false);
|
|
1087
1006
|
}
|
|
1088
1007
|
};
|
|
1089
|
-
const handleSwitch = async () => {
|
|
1090
|
-
if (!switchChain) return;
|
|
1091
|
-
setIsSwitching(true);
|
|
1092
|
-
try {
|
|
1093
|
-
await switchChain(asset.chainId);
|
|
1094
|
-
} catch (err) {
|
|
1095
|
-
const raw = err instanceof Error ? err.message : "Failed to switch chain";
|
|
1096
|
-
setError(formatUserError(raw));
|
|
1097
|
-
} finally {
|
|
1098
|
-
setIsSwitching(false);
|
|
1099
|
-
}
|
|
1100
|
-
};
|
|
1101
1008
|
return /* @__PURE__ */ jsxs4("div", { className: "rs-step", children: [
|
|
1102
1009
|
/* @__PURE__ */ jsx4("div", { style: { padding: "12px 12px 10px" }, children: /* @__PURE__ */ jsx4("div", { className: "rs-step-title", children: "Review order" }) }),
|
|
1103
1010
|
/* @__PURE__ */ jsxs4("div", { className: "rs-step-body rs-space-y-3", style: { paddingTop: 0 }, children: [
|
|
@@ -1166,7 +1073,7 @@ function ConfirmStep({
|
|
|
1166
1073
|
style: { width: 16, height: 16, borderRadius: "50%" }
|
|
1167
1074
|
}
|
|
1168
1075
|
),
|
|
1169
|
-
|
|
1076
|
+
formattedSendAmount,
|
|
1170
1077
|
" ",
|
|
1171
1078
|
asset.symbol
|
|
1172
1079
|
]
|
|
@@ -1195,29 +1102,9 @@ function ConfirmStep({
|
|
|
1195
1102
|
]
|
|
1196
1103
|
}
|
|
1197
1104
|
)
|
|
1198
|
-
] }),
|
|
1199
|
-
receiveAmountUsd !== null && /* @__PURE__ */ jsxs4("div", { className: "rs-card-row", children: [
|
|
1200
|
-
/* @__PURE__ */ jsx4("span", { className: "rs-card-label", children: "Value" }),
|
|
1201
|
-
/* @__PURE__ */ jsx4("span", { className: "rs-card-value", children: currencyFormatter.format(receiveAmountUsd) })
|
|
1202
1105
|
] })
|
|
1203
1106
|
] }),
|
|
1204
|
-
chainMismatch && /* @__PURE__ */
|
|
1205
|
-
/* @__PURE__ */ jsxs4("div", { className: "rs-chain-switch-text", children: [
|
|
1206
|
-
"Switch your wallet to ",
|
|
1207
|
-
getChainName(asset.chainId),
|
|
1208
|
-
" to sign."
|
|
1209
|
-
] }),
|
|
1210
|
-
switchChain && /* @__PURE__ */ jsx4(
|
|
1211
|
-
Button,
|
|
1212
|
-
{
|
|
1213
|
-
variant: "outline",
|
|
1214
|
-
size: "small",
|
|
1215
|
-
loading: isSwitching,
|
|
1216
|
-
onClick: handleSwitch,
|
|
1217
|
-
children: "Switch"
|
|
1218
|
-
}
|
|
1219
|
-
)
|
|
1220
|
-
] }),
|
|
1107
|
+
chainMismatch && /* @__PURE__ */ jsx4("div", { className: "rs-chain-switch", children: /* @__PURE__ */ jsx4("div", { className: "rs-chain-switch-text", children: isSwitching ? `Switching to ${getChainName(asset.chainId)}...` : `Switch your wallet to ${getChainName(asset.chainId)} to sign.` }) }),
|
|
1221
1108
|
error && /* @__PURE__ */ jsxs4("div", { className: "rs-alert rs-alert--error", children: [
|
|
1222
1109
|
/* @__PURE__ */ jsx4(
|
|
1223
1110
|
"svg",
|
|
@@ -1255,14 +1142,14 @@ function ConfirmStep({
|
|
|
1255
1142
|
}
|
|
1256
1143
|
|
|
1257
1144
|
// src/components/steps/DepositAddressStep.tsx
|
|
1258
|
-
import { useState as useState6, useEffect as
|
|
1145
|
+
import { useState as useState6, useEffect as useEffect6, useCallback as useCallback2, useRef as useRef4, useMemo as useMemo4 } from "react";
|
|
1259
1146
|
|
|
1260
1147
|
// src/components/ui/QRCode.tsx
|
|
1261
|
-
import { useEffect as
|
|
1262
|
-
import { Fragment as
|
|
1148
|
+
import { useEffect as useEffect5, useMemo as useMemo3, useState as useState5 } from "react";
|
|
1149
|
+
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1263
1150
|
function QRCode({ value, size = 200, iconSrc, className }) {
|
|
1264
1151
|
const [createQrCode, setCreateQrCode] = useState5(null);
|
|
1265
|
-
|
|
1152
|
+
useEffect5(() => {
|
|
1266
1153
|
let mounted = true;
|
|
1267
1154
|
void import("qrcode-generator").then((mod) => {
|
|
1268
1155
|
if (mounted) {
|
|
@@ -1277,7 +1164,7 @@ function QRCode({ value, size = 200, iconSrc, className }) {
|
|
|
1277
1164
|
mounted = false;
|
|
1278
1165
|
};
|
|
1279
1166
|
}, []);
|
|
1280
|
-
const svgContent =
|
|
1167
|
+
const svgContent = useMemo3(() => {
|
|
1281
1168
|
if (!createQrCode) {
|
|
1282
1169
|
return null;
|
|
1283
1170
|
}
|
|
@@ -1317,7 +1204,7 @@ function QRCode({ value, size = 200, iconSrc, className }) {
|
|
|
1317
1204
|
children: [
|
|
1318
1205
|
/* @__PURE__ */ jsx5("rect", { width: size, height: size, fill: "white", rx: 4 }),
|
|
1319
1206
|
svgContent ? /* @__PURE__ */ jsx5("path", { d: svgContent.paths, fill: "black" }) : /* @__PURE__ */ jsx5("rect", { x: 8, y: 8, width: size - 16, height: size - 16, fill: "#f1f5f9" }),
|
|
1320
|
-
iconSrc && /* @__PURE__ */ jsxs5(
|
|
1207
|
+
iconSrc && /* @__PURE__ */ jsxs5(Fragment2, { children: [
|
|
1321
1208
|
/* @__PURE__ */ jsx5(
|
|
1322
1209
|
"rect",
|
|
1323
1210
|
{
|
|
@@ -1395,17 +1282,17 @@ function DepositAddressStep({
|
|
|
1395
1282
|
onDepositDetected,
|
|
1396
1283
|
onError
|
|
1397
1284
|
}) {
|
|
1398
|
-
const supportedChainIds =
|
|
1285
|
+
const supportedChainIds = useMemo4(() => getSupportedChainIds(), []);
|
|
1399
1286
|
const BASE_CHAIN_ID = 8453;
|
|
1400
1287
|
const defaultChainId = supportedChainIds.includes(BASE_CHAIN_ID) ? BASE_CHAIN_ID : supportedChainIds[0];
|
|
1401
1288
|
const [sourceChainId, setSourceChainId] = useState6(defaultChainId);
|
|
1402
|
-
const tokensForChain =
|
|
1289
|
+
const tokensForChain = useMemo4(
|
|
1403
1290
|
() => getTargetTokenSymbolsForChain(sourceChainId),
|
|
1404
1291
|
[sourceChainId]
|
|
1405
1292
|
);
|
|
1406
1293
|
const defaultToken = tokensForChain.includes("USDC") ? "USDC" : tokensForChain[0] ?? "USDC";
|
|
1407
1294
|
const [sourceTokenSymbol, setSourceTokenSymbol] = useState6(defaultToken);
|
|
1408
|
-
|
|
1295
|
+
useEffect6(() => {
|
|
1409
1296
|
if (!tokensForChain.includes(sourceTokenSymbol)) {
|
|
1410
1297
|
setSourceTokenSymbol(tokensForChain[0] ?? "USDC");
|
|
1411
1298
|
}
|
|
@@ -1414,12 +1301,12 @@ function DepositAddressStep({
|
|
|
1414
1301
|
const [pollingError, setPollingError] = useState6(null);
|
|
1415
1302
|
const [chainDropdownOpen, setChainDropdownOpen] = useState6(false);
|
|
1416
1303
|
const [tokenDropdownOpen, setTokenDropdownOpen] = useState6(false);
|
|
1417
|
-
const depositHandledRef =
|
|
1418
|
-
const sourceSelectionRef =
|
|
1304
|
+
const depositHandledRef = useRef4(false);
|
|
1305
|
+
const sourceSelectionRef = useRef4({
|
|
1419
1306
|
chainId: defaultChainId,
|
|
1420
1307
|
tokenSymbol: defaultToken
|
|
1421
1308
|
});
|
|
1422
|
-
|
|
1309
|
+
useEffect6(() => {
|
|
1423
1310
|
sourceSelectionRef.current = {
|
|
1424
1311
|
chainId: sourceChainId,
|
|
1425
1312
|
tokenSymbol: sourceTokenSymbol
|
|
@@ -1443,7 +1330,7 @@ function DepositAddressStep({
|
|
|
1443
1330
|
setTimeout(() => setCopied(false), 2e3);
|
|
1444
1331
|
}
|
|
1445
1332
|
}, [smartAccount]);
|
|
1446
|
-
|
|
1333
|
+
useEffect6(() => {
|
|
1447
1334
|
depositHandledRef.current = false;
|
|
1448
1335
|
setPollingError(null);
|
|
1449
1336
|
let timeoutId;
|
|
@@ -1695,6 +1582,7 @@ function DepositFlow({
|
|
|
1695
1582
|
waitForFinalTx = true,
|
|
1696
1583
|
reownWallet,
|
|
1697
1584
|
onConnect,
|
|
1585
|
+
onDisconnect,
|
|
1698
1586
|
onRequestConnect,
|
|
1699
1587
|
connectButtonLabel,
|
|
1700
1588
|
uiConfig,
|
|
@@ -1713,13 +1601,30 @@ function DepositFlow({
|
|
|
1713
1601
|
const [totalBalanceUsd, setTotalBalanceUsd] = useState7(0);
|
|
1714
1602
|
const [isConnectSelectionConfirmed, setIsConnectSelectionConfirmed] = useState7(false);
|
|
1715
1603
|
const [selectedConnectAddress, setSelectedConnectAddress] = useState7(null);
|
|
1716
|
-
const
|
|
1604
|
+
const portfolioAssetsRef = useRef5([]);
|
|
1605
|
+
const handleAssetsLoaded = useCallback3((assets) => {
|
|
1606
|
+
portfolioAssetsRef.current = assets;
|
|
1607
|
+
}, []);
|
|
1608
|
+
const getTokenPriceUsd = useCallback3((symbol) => {
|
|
1609
|
+
const sym = symbol.toLowerCase();
|
|
1610
|
+
for (const asset of portfolioAssetsRef.current) {
|
|
1611
|
+
if (asset.symbol.toLowerCase() === sym && asset.balanceUsd && asset.balance) {
|
|
1612
|
+
try {
|
|
1613
|
+
const balanceUnits = Number(asset.balance) / 10 ** asset.decimals;
|
|
1614
|
+
if (balanceUnits > 0) return asset.balanceUsd / balanceUnits;
|
|
1615
|
+
} catch {
|
|
1616
|
+
}
|
|
1617
|
+
}
|
|
1618
|
+
}
|
|
1619
|
+
return null;
|
|
1620
|
+
}, []);
|
|
1621
|
+
const dappSwitchChain = useMemo5(() => {
|
|
1717
1622
|
if (!dappWalletClient?.switchChain) return void 0;
|
|
1718
1623
|
return async (chainId) => {
|
|
1719
1624
|
await dappWalletClient.switchChain?.({ id: chainId });
|
|
1720
1625
|
};
|
|
1721
1626
|
}, [dappWalletClient]);
|
|
1722
|
-
const walletOptions =
|
|
1627
|
+
const walletOptions = useMemo5(() => {
|
|
1723
1628
|
const options = [];
|
|
1724
1629
|
const seen = /* @__PURE__ */ new Set();
|
|
1725
1630
|
if (dappWalletClient?.account && dappAddress) {
|
|
@@ -1730,7 +1635,7 @@ function DepositFlow({
|
|
|
1730
1635
|
});
|
|
1731
1636
|
seen.add(dappWalletClient.account.address.toLowerCase());
|
|
1732
1637
|
}
|
|
1733
|
-
if (reownWallet?.address && reownWallet.isConnected && !seen.has(reownWallet.address.toLowerCase())) {
|
|
1638
|
+
if (reownWallet?.address && reownWallet.isConnected && reownWallet.walletClient && reownWallet.publicClient && !seen.has(reownWallet.address.toLowerCase())) {
|
|
1734
1639
|
options.push({
|
|
1735
1640
|
address: reownWallet.address,
|
|
1736
1641
|
label: "External Wallet",
|
|
@@ -1744,12 +1649,15 @@ function DepositFlow({
|
|
|
1744
1649
|
dappAddress,
|
|
1745
1650
|
reownWallet?.address,
|
|
1746
1651
|
reownWallet?.isConnected,
|
|
1652
|
+
reownWallet?.walletClient,
|
|
1653
|
+
reownWallet?.publicClient,
|
|
1747
1654
|
reownWallet?.icon
|
|
1748
1655
|
]);
|
|
1749
1656
|
const canAutoLock = dappWalletClient?.account && dappAddress && !reownWallet;
|
|
1750
1657
|
const hasWalletOptions = walletOptions.length > 0;
|
|
1658
|
+
const hasReownSession = Boolean(reownWallet?.isConnected || reownWallet?.address);
|
|
1751
1659
|
const showConnectStep = !canAutoLock && !isConnectSelectionConfirmed;
|
|
1752
|
-
const signerContext =
|
|
1660
|
+
const signerContext = useMemo5(() => {
|
|
1753
1661
|
if (flowMode === "deposit-address") {
|
|
1754
1662
|
if (!dappAddress) return null;
|
|
1755
1663
|
return {
|
|
@@ -1800,8 +1708,8 @@ function DepositFlow({
|
|
|
1800
1708
|
targetChain
|
|
1801
1709
|
]);
|
|
1802
1710
|
const sessionKeyAddress = dappAddress ?? signerContext?.ownerAddress ?? null;
|
|
1803
|
-
const lastTargetRef =
|
|
1804
|
-
|
|
1711
|
+
const lastTargetRef = useRef5(null);
|
|
1712
|
+
useEffect7(() => {
|
|
1805
1713
|
const prev = lastTargetRef.current;
|
|
1806
1714
|
if (prev && (prev.chain !== targetChain || prev.token.toLowerCase() !== targetToken.toLowerCase())) {
|
|
1807
1715
|
if (step.type !== "processing") {
|
|
@@ -1836,17 +1744,16 @@ function DepositFlow({
|
|
|
1836
1744
|
return {
|
|
1837
1745
|
type: "amount",
|
|
1838
1746
|
smartAccount: prev.smartAccount,
|
|
1839
|
-
asset: prev.asset
|
|
1840
|
-
amount: prev.amount
|
|
1747
|
+
asset: prev.asset
|
|
1841
1748
|
};
|
|
1842
1749
|
});
|
|
1843
1750
|
}, []);
|
|
1844
1751
|
const stepIndex = step.type === "setup" ? 0 : step.type === "deposit-address" ? 1 : step.type === "select-asset" ? 1 : step.type === "amount" ? 2 : step.type === "confirm" ? 3 : 4;
|
|
1845
1752
|
const currentBackHandler = step.type === "deposit-address" ? handleBackFromDepositAddress : step.type === "select-asset" && signerContext && !canAutoLock ? handleBackFromSelectAsset : step.type === "amount" ? handleBackFromAmount : step.type === "confirm" ? handleBackFromConfirm : void 0;
|
|
1846
|
-
|
|
1753
|
+
useEffect7(() => {
|
|
1847
1754
|
onStepChange?.(stepIndex, currentBackHandler);
|
|
1848
1755
|
}, [stepIndex, currentBackHandler, onStepChange]);
|
|
1849
|
-
|
|
1756
|
+
useEffect7(() => {
|
|
1850
1757
|
onTotalBalanceChange?.(totalBalanceUsd);
|
|
1851
1758
|
}, [totalBalanceUsd, onTotalBalanceChange]);
|
|
1852
1759
|
const isDepositAddressMode = flowMode === "deposit-address";
|
|
@@ -1910,7 +1817,10 @@ function DepositFlow({
|
|
|
1910
1817
|
[defaultAmount]
|
|
1911
1818
|
);
|
|
1912
1819
|
const handleAmountContinue = useCallback3(
|
|
1913
|
-
(amount, balance) => {
|
|
1820
|
+
(amount, targetAmount, balance) => {
|
|
1821
|
+
const targetSym = getTokenSymbol(targetToken, targetChain);
|
|
1822
|
+
const isTargetStable = isStablecoinSymbol(targetSym);
|
|
1823
|
+
const targetTokenPriceUsd = isTargetStable ? 1 : getTokenPriceUsd(targetSym);
|
|
1914
1824
|
setStep((prev) => {
|
|
1915
1825
|
if (prev.type !== "amount") return prev;
|
|
1916
1826
|
return {
|
|
@@ -1918,11 +1828,13 @@ function DepositFlow({
|
|
|
1918
1828
|
smartAccount: prev.smartAccount,
|
|
1919
1829
|
asset: prev.asset,
|
|
1920
1830
|
amount,
|
|
1831
|
+
targetAmount,
|
|
1832
|
+
targetTokenPriceUsd,
|
|
1921
1833
|
balance
|
|
1922
1834
|
};
|
|
1923
1835
|
});
|
|
1924
1836
|
},
|
|
1925
|
-
[]
|
|
1837
|
+
[targetToken, targetChain, getTokenPriceUsd]
|
|
1926
1838
|
);
|
|
1927
1839
|
const handleDepositSubmitted = useCallback3(
|
|
1928
1840
|
(txHash, chainId, amount, token) => {
|
|
@@ -1968,22 +1880,22 @@ function DepositFlow({
|
|
|
1968
1880
|
const handleTotalBalanceComputed = useCallback3((total) => {
|
|
1969
1881
|
setTotalBalanceUsd(total);
|
|
1970
1882
|
}, []);
|
|
1971
|
-
const selectedConnectAddressEffective =
|
|
1883
|
+
const selectedConnectAddressEffective = useMemo5(() => {
|
|
1972
1884
|
if (selectedConnectAddress) return selectedConnectAddress;
|
|
1973
1885
|
if (walletOptions.length === 1) {
|
|
1974
1886
|
return walletOptions[0].address;
|
|
1975
1887
|
}
|
|
1976
1888
|
return null;
|
|
1977
1889
|
}, [selectedConnectAddress, walletOptions]);
|
|
1978
|
-
const walletOptionsKey =
|
|
1890
|
+
const walletOptionsKey = useMemo5(
|
|
1979
1891
|
() => walletOptions.map((option) => option.address.toLowerCase()).join(","),
|
|
1980
1892
|
[walletOptions]
|
|
1981
1893
|
);
|
|
1982
|
-
const hasNavigatedBackRef =
|
|
1983
|
-
|
|
1894
|
+
const hasNavigatedBackRef = useRef5(false);
|
|
1895
|
+
useEffect7(() => {
|
|
1984
1896
|
setIsConnectSelectionConfirmed(false);
|
|
1985
1897
|
}, [walletOptionsKey]);
|
|
1986
|
-
|
|
1898
|
+
useEffect7(() => {
|
|
1987
1899
|
if (hasNavigatedBackRef.current || isConnectSelectionConfirmed || flowMode) {
|
|
1988
1900
|
return;
|
|
1989
1901
|
}
|
|
@@ -1996,12 +1908,13 @@ function DepositFlow({
|
|
|
1996
1908
|
return;
|
|
1997
1909
|
}
|
|
1998
1910
|
}
|
|
1999
|
-
if (!hasWalletOptions && dappAddress) {
|
|
1911
|
+
if (!hasWalletOptions && dappAddress && !hasReownSession) {
|
|
2000
1912
|
handleSelectTransferCrypto();
|
|
2001
1913
|
setIsConnectSelectionConfirmed(true);
|
|
2002
1914
|
}
|
|
2003
1915
|
}, [
|
|
2004
1916
|
hasWalletOptions,
|
|
1917
|
+
hasReownSession,
|
|
2005
1918
|
isConnectSelectionConfirmed,
|
|
2006
1919
|
flowMode,
|
|
2007
1920
|
selectedConnectAddressEffective,
|
|
@@ -2022,6 +1935,7 @@ function DepositFlow({
|
|
|
2022
1935
|
} : void 0,
|
|
2023
1936
|
onRequestConnect,
|
|
2024
1937
|
onConnect,
|
|
1938
|
+
onDisconnect,
|
|
2025
1939
|
onContinue: () => {
|
|
2026
1940
|
if (selectedConnectAddressEffective) {
|
|
2027
1941
|
setSelectedConnectAddress(selectedConnectAddressEffective);
|
|
@@ -2069,7 +1983,6 @@ function DepositFlow({
|
|
|
2069
1983
|
sourceChain: step.sourceChain,
|
|
2070
1984
|
sourceToken: step.sourceToken,
|
|
2071
1985
|
targetChain,
|
|
2072
|
-
targetToken,
|
|
2073
1986
|
amount: step.amount,
|
|
2074
1987
|
waitForFinalTx,
|
|
2075
1988
|
service,
|
|
@@ -2122,7 +2035,8 @@ function DepositFlow({
|
|
|
2122
2035
|
defaultSourceToken,
|
|
2123
2036
|
service,
|
|
2124
2037
|
onContinue: handleAssetContinue,
|
|
2125
|
-
onTotalBalanceComputed: handleTotalBalanceComputed
|
|
2038
|
+
onTotalBalanceComputed: handleTotalBalanceComputed,
|
|
2039
|
+
onAssetsLoaded: handleAssetsLoaded
|
|
2126
2040
|
}
|
|
2127
2041
|
),
|
|
2128
2042
|
step.type === "amount" && /* @__PURE__ */ jsx7(
|
|
@@ -2149,6 +2063,8 @@ function DepositFlow({
|
|
|
2149
2063
|
recipient,
|
|
2150
2064
|
asset: step.asset,
|
|
2151
2065
|
amount: step.amount,
|
|
2066
|
+
targetAmount: step.targetAmount,
|
|
2067
|
+
targetTokenPriceUsd: step.targetTokenPriceUsd,
|
|
2152
2068
|
balance: step.balance,
|
|
2153
2069
|
targetChain,
|
|
2154
2070
|
targetToken,
|
|
@@ -2166,7 +2082,6 @@ function DepositFlow({
|
|
|
2166
2082
|
sourceChain: step.sourceChain,
|
|
2167
2083
|
sourceToken: step.sourceToken,
|
|
2168
2084
|
targetChain,
|
|
2169
|
-
targetToken,
|
|
2170
2085
|
amount: step.amount,
|
|
2171
2086
|
waitForFinalTx,
|
|
2172
2087
|
service,
|
|
@@ -2184,7 +2099,7 @@ function DepositFlow({
|
|
|
2184
2099
|
// src/DepositModal.tsx
|
|
2185
2100
|
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2186
2101
|
var ReownDepositInner = lazy(
|
|
2187
|
-
() => import("./DepositModalReown-
|
|
2102
|
+
() => import("./DepositModalReown-7ZO7HUN3.mjs").then((m) => ({ default: m.DepositModalReown }))
|
|
2188
2103
|
);
|
|
2189
2104
|
function DepositModal(props) {
|
|
2190
2105
|
const needsReown = !!props.reownAppId;
|
|
@@ -2214,6 +2129,7 @@ function DepositModalInner({
|
|
|
2214
2129
|
waitForFinalTx = true,
|
|
2215
2130
|
reownWallet,
|
|
2216
2131
|
onConnect,
|
|
2132
|
+
onDisconnect,
|
|
2217
2133
|
onRequestConnect,
|
|
2218
2134
|
connectButtonLabel,
|
|
2219
2135
|
theme,
|
|
@@ -2228,26 +2144,26 @@ function DepositModalInner({
|
|
|
2228
2144
|
onError,
|
|
2229
2145
|
debug
|
|
2230
2146
|
}) {
|
|
2231
|
-
const modalRef =
|
|
2147
|
+
const modalRef = useRef6(null);
|
|
2232
2148
|
const [currentStepIndex, setCurrentStepIndex] = useState8(0);
|
|
2233
2149
|
const [totalBalanceUsd, setTotalBalanceUsd] = useState8(null);
|
|
2234
|
-
const backHandlerRef =
|
|
2150
|
+
const backHandlerRef = useRef6(void 0);
|
|
2235
2151
|
const targetChain = getChainId(targetChainProp);
|
|
2236
2152
|
const sourceChain = sourceChainProp ? getChainId(sourceChainProp) : void 0;
|
|
2237
|
-
const service =
|
|
2238
|
-
|
|
2153
|
+
const service = useMemo6(() => createDepositService(backendUrl), [backendUrl]);
|
|
2154
|
+
useEffect8(() => {
|
|
2239
2155
|
if (isOpen && modalRef.current) {
|
|
2240
2156
|
applyTheme(modalRef.current, theme);
|
|
2241
2157
|
}
|
|
2242
2158
|
}, [isOpen, theme]);
|
|
2243
|
-
const hasCalledReady =
|
|
2244
|
-
|
|
2159
|
+
const hasCalledReady = useRef6(false);
|
|
2160
|
+
useEffect8(() => {
|
|
2245
2161
|
if (isOpen && !hasCalledReady.current) {
|
|
2246
2162
|
hasCalledReady.current = true;
|
|
2247
2163
|
onReady?.();
|
|
2248
2164
|
}
|
|
2249
2165
|
}, [isOpen, onReady]);
|
|
2250
|
-
|
|
2166
|
+
useEffect8(() => {
|
|
2251
2167
|
if (!isOpen) {
|
|
2252
2168
|
setCurrentStepIndex(0);
|
|
2253
2169
|
}
|
|
@@ -2383,6 +2299,7 @@ function DepositModalInner({
|
|
|
2383
2299
|
waitForFinalTx,
|
|
2384
2300
|
reownWallet,
|
|
2385
2301
|
onConnect,
|
|
2302
|
+
onDisconnect,
|
|
2386
2303
|
onRequestConnect,
|
|
2387
2304
|
connectButtonLabel,
|
|
2388
2305
|
uiConfig,
|