@0xsequence/wallet-widget 5.4.7 → 5.4.9

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.
Files changed (125) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +18 -0
  3. package/dist/cjs/components/NavigationHeader/content/HomeHeader.d.ts.map +1 -1
  4. package/dist/cjs/components/NavigationHeader/content/HomeHeader.js +5 -5
  5. package/dist/cjs/components/NavigationHeader/content/HomeHeader.js.map +1 -1
  6. package/dist/cjs/components/SearchLists/GeneralList.d.ts +1 -1
  7. package/dist/cjs/components/SearchLists/GeneralList.d.ts.map +1 -1
  8. package/dist/cjs/components/SearchLists/GeneralList.js +6 -22
  9. package/dist/cjs/components/SearchLists/GeneralList.js.map +1 -1
  10. package/dist/cjs/components/SequenceWalletProvider/SequenceWalletProvider.d.ts.map +1 -1
  11. package/dist/cjs/components/SequenceWalletProvider/SequenceWalletProvider.js +11 -14
  12. package/dist/cjs/components/SequenceWalletProvider/SequenceWalletProvider.js.map +1 -1
  13. package/dist/cjs/components/SequenceWalletProvider/utils/index.d.ts.map +1 -1
  14. package/dist/cjs/components/SequenceWalletProvider/utils/index.js +0 -6
  15. package/dist/cjs/components/SequenceWalletProvider/utils/index.js.map +1 -1
  16. package/dist/cjs/constants/analytics.d.ts +0 -1
  17. package/dist/cjs/constants/analytics.d.ts.map +1 -1
  18. package/dist/cjs/constants/analytics.js +1 -2
  19. package/dist/cjs/constants/analytics.js.map +1 -1
  20. package/dist/cjs/contexts/Navigation.d.ts +1 -18
  21. package/dist/cjs/contexts/Navigation.d.ts.map +1 -1
  22. package/dist/cjs/contexts/Navigation.js.map +1 -1
  23. package/dist/cjs/hooks/index.d.ts +0 -1
  24. package/dist/cjs/hooks/index.d.ts.map +1 -1
  25. package/dist/cjs/hooks/index.js +0 -1
  26. package/dist/cjs/hooks/index.js.map +1 -1
  27. package/dist/cjs/views/Buy/index.d.ts.map +1 -1
  28. package/dist/cjs/views/Buy/index.js +15 -12
  29. package/dist/cjs/views/Buy/index.js.map +1 -1
  30. package/dist/cjs/views/CoinDetails/index.d.ts.map +1 -1
  31. package/dist/cjs/views/CoinDetails/index.js +1 -5
  32. package/dist/cjs/views/CoinDetails/index.js.map +1 -1
  33. package/dist/cjs/views/Swap/Swap.d.ts.map +1 -1
  34. package/dist/cjs/views/Swap/Swap.js +16 -2
  35. package/dist/cjs/views/Swap/Swap.js.map +1 -1
  36. package/dist/cjs/views/Swap/consts.d.ts +15 -0
  37. package/dist/cjs/views/Swap/consts.d.ts.map +1 -0
  38. package/dist/cjs/views/Swap/consts.js +192 -0
  39. package/dist/cjs/views/Swap/consts.js.map +1 -0
  40. package/dist/cjs/views/index.d.ts +0 -2
  41. package/dist/cjs/views/index.d.ts.map +1 -1
  42. package/dist/cjs/views/index.js +0 -2
  43. package/dist/cjs/views/index.js.map +1 -1
  44. package/dist/esm/components/NavigationHeader/content/HomeHeader.d.ts.map +1 -1
  45. package/dist/esm/components/NavigationHeader/content/HomeHeader.js +5 -5
  46. package/dist/esm/components/NavigationHeader/content/HomeHeader.js.map +1 -1
  47. package/dist/esm/components/SearchLists/GeneralList.d.ts +1 -1
  48. package/dist/esm/components/SearchLists/GeneralList.d.ts.map +1 -1
  49. package/dist/esm/components/SearchLists/GeneralList.js +7 -23
  50. package/dist/esm/components/SearchLists/GeneralList.js.map +1 -1
  51. package/dist/esm/components/SequenceWalletProvider/SequenceWalletProvider.d.ts.map +1 -1
  52. package/dist/esm/components/SequenceWalletProvider/SequenceWalletProvider.js +11 -14
  53. package/dist/esm/components/SequenceWalletProvider/SequenceWalletProvider.js.map +1 -1
  54. package/dist/esm/components/SequenceWalletProvider/utils/index.d.ts.map +1 -1
  55. package/dist/esm/components/SequenceWalletProvider/utils/index.js +1 -7
  56. package/dist/esm/components/SequenceWalletProvider/utils/index.js.map +1 -1
  57. package/dist/esm/constants/analytics.d.ts +0 -1
  58. package/dist/esm/constants/analytics.d.ts.map +1 -1
  59. package/dist/esm/constants/analytics.js +1 -2
  60. package/dist/esm/constants/analytics.js.map +1 -1
  61. package/dist/esm/contexts/Navigation.d.ts +1 -18
  62. package/dist/esm/contexts/Navigation.d.ts.map +1 -1
  63. package/dist/esm/contexts/Navigation.js.map +1 -1
  64. package/dist/esm/hooks/index.d.ts +0 -1
  65. package/dist/esm/hooks/index.d.ts.map +1 -1
  66. package/dist/esm/hooks/index.js +0 -1
  67. package/dist/esm/hooks/index.js.map +1 -1
  68. package/dist/esm/views/Buy/index.d.ts.map +1 -1
  69. package/dist/esm/views/Buy/index.js +17 -14
  70. package/dist/esm/views/Buy/index.js.map +1 -1
  71. package/dist/esm/views/CoinDetails/index.d.ts.map +1 -1
  72. package/dist/esm/views/CoinDetails/index.js +1 -5
  73. package/dist/esm/views/CoinDetails/index.js.map +1 -1
  74. package/dist/esm/views/Swap/Swap.d.ts.map +1 -1
  75. package/dist/esm/views/Swap/Swap.js +16 -2
  76. package/dist/esm/views/Swap/Swap.js.map +1 -1
  77. package/dist/esm/views/Swap/consts.d.ts +15 -0
  78. package/dist/esm/views/Swap/consts.d.ts.map +1 -0
  79. package/dist/esm/views/Swap/consts.js +189 -0
  80. package/dist/esm/views/Swap/consts.js.map +1 -0
  81. package/dist/esm/views/index.d.ts +0 -2
  82. package/dist/esm/views/index.d.ts.map +1 -1
  83. package/dist/esm/views/index.js +0 -2
  84. package/dist/esm/views/index.js.map +1 -1
  85. package/package.json +18 -17
  86. package/dist/cjs/components/SequenceWalletProvider/ProviderComponents/SwapProvider.d.ts +0 -5
  87. package/dist/cjs/components/SequenceWalletProvider/ProviderComponents/SwapProvider.d.ts.map +0 -1
  88. package/dist/cjs/components/SequenceWalletProvider/ProviderComponents/SwapProvider.js +0 -42
  89. package/dist/cjs/components/SequenceWalletProvider/ProviderComponents/SwapProvider.js.map +0 -1
  90. package/dist/cjs/contexts/Swap.d.ts +0 -8
  91. package/dist/cjs/contexts/Swap.d.ts.map +0 -1
  92. package/dist/cjs/contexts/Swap.js +0 -8
  93. package/dist/cjs/contexts/Swap.js.map +0 -1
  94. package/dist/cjs/hooks/useSwap.d.ts +0 -5
  95. package/dist/cjs/hooks/useSwap.d.ts.map +0 -1
  96. package/dist/cjs/hooks/useSwap.js +0 -13
  97. package/dist/cjs/hooks/useSwap.js.map +0 -1
  98. package/dist/cjs/views/SwapCoin/SwapList.d.ts +0 -9
  99. package/dist/cjs/views/SwapCoin/SwapList.d.ts.map +0 -1
  100. package/dist/cjs/views/SwapCoin/SwapList.js +0 -240
  101. package/dist/cjs/views/SwapCoin/SwapList.js.map +0 -1
  102. package/dist/cjs/views/SwapCoin/index.d.ts +0 -6
  103. package/dist/cjs/views/SwapCoin/index.d.ts.map +0 -1
  104. package/dist/cjs/views/SwapCoin/index.js +0 -81
  105. package/dist/cjs/views/SwapCoin/index.js.map +0 -1
  106. package/dist/esm/components/SequenceWalletProvider/ProviderComponents/SwapProvider.d.ts +0 -5
  107. package/dist/esm/components/SequenceWalletProvider/ProviderComponents/SwapProvider.d.ts.map +0 -1
  108. package/dist/esm/components/SequenceWalletProvider/ProviderComponents/SwapProvider.js +0 -38
  109. package/dist/esm/components/SequenceWalletProvider/ProviderComponents/SwapProvider.js.map +0 -1
  110. package/dist/esm/contexts/Swap.d.ts +0 -8
  111. package/dist/esm/contexts/Swap.d.ts.map +0 -1
  112. package/dist/esm/contexts/Swap.js +0 -4
  113. package/dist/esm/contexts/Swap.js.map +0 -1
  114. package/dist/esm/hooks/useSwap.d.ts +0 -5
  115. package/dist/esm/hooks/useSwap.d.ts.map +0 -1
  116. package/dist/esm/hooks/useSwap.js +0 -9
  117. package/dist/esm/hooks/useSwap.js.map +0 -1
  118. package/dist/esm/views/SwapCoin/SwapList.d.ts +0 -9
  119. package/dist/esm/views/SwapCoin/SwapList.d.ts.map +0 -1
  120. package/dist/esm/views/SwapCoin/SwapList.js +0 -236
  121. package/dist/esm/views/SwapCoin/SwapList.js.map +0 -1
  122. package/dist/esm/views/SwapCoin/index.d.ts +0 -6
  123. package/dist/esm/views/SwapCoin/index.d.ts.map +0 -1
  124. package/dist/esm/views/SwapCoin/index.js +0 -77
  125. package/dist/esm/views/SwapCoin/index.js.map +0 -1
@@ -1,38 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useWalletSettings } from '@0xsequence/connect';
3
- import { useAPIClient } from '@0xsequence/hooks';
4
- import { useEffect, useMemo, useState } from 'react';
5
- import { useChains } from 'wagmi';
6
- import { SwapContextProvider } from '../../../contexts/Swap.js';
7
- export const SwapProvider = ({ children }) => {
8
- const apiClient = useAPIClient();
9
- const chains = useChains();
10
- const [lifiChains, setLifiChains] = useState([]);
11
- const [lifiTokens, setLifiTokens] = useState([]);
12
- const { readOnlyNetworks, displayedAssets } = useWalletSettings();
13
- const allNetworks = useMemo(() => [
14
- ...new Set([...chains.map(chain => chain.id), ...(readOnlyNetworks || []), ...displayedAssets.map(asset => asset.chainId)])
15
- ], [chains, readOnlyNetworks, displayedAssets]);
16
- useEffect(() => {
17
- const fetchLifiChains = async () => {
18
- const lifiSupportedChains = await apiClient.getLifiChains();
19
- const supportedChains = lifiSupportedChains.chains.filter(chain => allNetworks.includes(chain));
20
- setLifiChains(supportedChains);
21
- };
22
- fetchLifiChains();
23
- }, [apiClient, allNetworks]);
24
- useEffect(() => {
25
- const fetchLifiTokens = async () => {
26
- if (lifiChains.length > 0) {
27
- const tokens = await apiClient.getLifiTokens({ chainIds: lifiChains });
28
- setLifiTokens(tokens.tokens);
29
- }
30
- };
31
- fetchLifiTokens();
32
- }, [apiClient, lifiChains]);
33
- return (_jsx(SwapContextProvider, { value: {
34
- lifiChains,
35
- lifiTokens
36
- }, children: children }));
37
- };
38
- //# sourceMappingURL=SwapProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwapProvider.js","sourceRoot":"","sources":["../../../../../src/components/SequenceWalletProvider/ProviderComponents/SwapProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IACpE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAY,EAAE,CAAC,CAAA;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAU,EAAE,CAAC,CAAA;IAEzD,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAAA;IAEjE,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC;QACJ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KAC5H,EACD,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAC5C,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,MAAM,mBAAmB,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,CAAA;YAC3D,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YAC/F,aAAa,CAAC,eAAe,CAAC,CAAA;QAChC,CAAC,CAAA;QACD,eAAe,EAAE,CAAA;IACnB,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IAE5B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;gBACtE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC,CAAA;QACD,eAAe,EAAE,CAAA;IACnB,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAE3B,OAAO,CACL,KAAC,mBAAmB,IAClB,KAAK,EAAE;YACL,UAAU;YACV,UAAU;SACX,YAEA,QAAQ,GACW,CACvB,CAAA;AACH,CAAC,CAAA"}
@@ -1,8 +0,0 @@
1
- import type { Token } from '@0xsequence/api';
2
- export interface SwapContext {
3
- lifiChains: number[];
4
- lifiTokens: Token[];
5
- }
6
- declare const useSwapContext: () => SwapContext, SwapContextProvider: import("react").Provider<SwapContext | undefined>;
7
- export { SwapContextProvider, useSwapContext };
8
- //# sourceMappingURL=Swap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Swap.d.ts","sourceRoot":"","sources":["../../../src/contexts/Swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAI5C,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,UAAU,EAAE,KAAK,EAAE,CAAA;CACpB;AAED,QAAA,MAAO,cAAc,qBAAE,mBAAmB,mDAAuC,CAAA;AAEjF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA"}
@@ -1,4 +0,0 @@
1
- import { createGenericContext } from './genericContext.js';
2
- const [useSwapContext, SwapContextProvider] = createGenericContext();
3
- export { SwapContextProvider, useSwapContext };
4
- //# sourceMappingURL=Swap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Swap.js","sourceRoot":"","sources":["../../../src/contexts/Swap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAO1D,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,GAAG,oBAAoB,EAAe,CAAA;AAEjF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA"}
@@ -1,5 +0,0 @@
1
- export declare const useSwap: () => {
2
- lifiChains: number[];
3
- lifiTokens: import("@0xsequence/api").Token[];
4
- };
5
- //# sourceMappingURL=useSwap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwap.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSwap.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;CAOnB,CAAA"}
@@ -1,9 +0,0 @@
1
- import { useSwapContext } from '../contexts/Swap.js';
2
- export const useSwap = () => {
3
- const { lifiChains, lifiTokens } = useSwapContext();
4
- return {
5
- lifiChains,
6
- lifiTokens
7
- };
8
- };
9
- //# sourceMappingURL=useSwap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwap.js","sourceRoot":"","sources":["../../../src/hooks/useSwap.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAA;IAEnD,OAAO;QACL,UAAU;QACV,UAAU;KACX,CAAA;AACH,CAAC,CAAA"}
@@ -1,9 +0,0 @@
1
- interface SwapListProps {
2
- chainId: number;
3
- contractAddress: string;
4
- amount: string;
5
- slippageBps?: number;
6
- }
7
- export declare const SwapList: ({ chainId, contractAddress, amount, slippageBps }: SwapListProps) => import("react/jsx-runtime").JSX.Element;
8
- export {};
9
- //# sourceMappingURL=SwapList.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwapList.d.ts","sourceRoot":"","sources":["../../../../src/views/SwapCoin/SwapList.tsx"],"names":[],"mappings":"AA0BA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,QAAQ,GAAI,mDAAmD,aAAa,4CA4VxF,CAAA"}
@@ -1,236 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { compareAddress, ContractVerificationStatus, CryptoOption, formatDisplay, sendTransactions, useAnalyticsContext } from '@0xsequence/connect';
3
- import { Button, Spinner, Text } from '@0xsequence/design-system';
4
- import { DEFAULT_SLIPPAGE_BPS, useClearCachedBalances, useGetContractInfo, useGetSwapQuote, useGetSwapRoutes, useGetTokenBalancesSummary, useIndexerClient } from '@0xsequence/hooks';
5
- import { useMemo, useState } from 'react';
6
- import { formatUnits, zeroAddress } from 'viem';
7
- import { useAccount, useChainId, usePublicClient, useSwitchChain, useWalletClient } from 'wagmi';
8
- import { EVENT_SOURCE, EVENT_TYPES } from '../../constants/analytics.js';
9
- import { useNavigation } from '../../hooks/index.js';
10
- export const SwapList = ({ chainId, contractAddress, amount, slippageBps }) => {
11
- const { clearCachedBalances } = useClearCachedBalances();
12
- const { setNavigation } = useNavigation();
13
- const { address: userAddress, connector } = useAccount();
14
- const [isTxsPending, setIsTxsPending] = useState(false);
15
- const [isErrorTx, setIsErrorTx] = useState(false);
16
- const [selectedCurrency, setSelectedCurrency] = useState();
17
- const publicClient = usePublicClient({ chainId });
18
- const { data: walletClient } = useWalletClient({ chainId });
19
- const { switchChainAsync } = useSwitchChain();
20
- const isConnectorSequenceBased = connector.type?.includes('sequence');
21
- // the isSequenceBased flag is not set on the connector. We need to fix this
22
- // const isConnectorSequenceBased = !!(connector as ExtendedConnector)?._wallet?.isSequenceBased
23
- const { analytics } = useAnalyticsContext();
24
- const connectedChainId = useChainId();
25
- const isCorrectChainId = connectedChainId === chainId;
26
- const showSwitchNetwork = !isCorrectChainId && !isConnectorSequenceBased;
27
- const buyCurrencyAddress = contractAddress;
28
- const sellCurrencyAddress = selectedCurrency || '';
29
- const { data: swapRoutes = [], isLoading: swapRoutesIsLoading, isError: isErrorSwapRoutes } = useGetSwapRoutes({
30
- walletAddress: userAddress ?? '',
31
- toTokenAddress: buyCurrencyAddress,
32
- toTokenAmount: amount,
33
- chainId: chainId
34
- });
35
- const { data: currencyInfo, isLoading: isLoadingCurrencyInfo } = useGetContractInfo({
36
- chainID: String(chainId),
37
- contractAddress: contractAddress
38
- });
39
- const disableSwapQuote = !selectedCurrency || compareAddress(selectedCurrency, buyCurrencyAddress);
40
- const { data: swapQuote, isLoading: isLoadingSwapQuote, isError: isErrorSwapQuote } = useGetSwapQuote({
41
- params: {
42
- walletAddress: userAddress ?? '',
43
- toTokenAddress: buyCurrencyAddress,
44
- toTokenAmount: amount,
45
- fromTokenAddress: sellCurrencyAddress,
46
- chainId: chainId,
47
- includeApprove: true,
48
- slippageBps: slippageBps || DEFAULT_SLIPPAGE_BPS
49
- }
50
- }, {
51
- disabled: disableSwapQuote
52
- });
53
- const { data: tokenBalancesData, isLoading: tokenBalancesIsLoading } = useGetTokenBalancesSummary({
54
- chainIds: [chainId],
55
- filter: {
56
- accountAddresses: userAddress ? [userAddress] : [],
57
- contractStatus: ContractVerificationStatus.ALL,
58
- contractWhitelist: swapRoutes.flatMap(route => route.fromTokens).map(fromToken => fromToken.address.toLowerCase()),
59
- omitNativeBalances: false
60
- },
61
- omitMetadata: true
62
- });
63
- const tokenBalancesMap = useMemo(() => {
64
- const map = new Map();
65
- tokenBalancesData?.pages?.forEach(page => {
66
- page.balances?.forEach(balanceData => {
67
- if (balanceData.contractAddress && balanceData.balance) {
68
- map.set(balanceData.contractAddress.toLowerCase(), BigInt(balanceData.balance));
69
- }
70
- });
71
- });
72
- return map;
73
- }, [tokenBalancesData]);
74
- const indexerClient = useIndexerClient(chainId);
75
- const quoteFetchInProgress = isLoadingSwapQuote;
76
- const isLoading = swapRoutesIsLoading || isLoadingCurrencyInfo || tokenBalancesIsLoading;
77
- const onClickProceed = async () => {
78
- if (!userAddress || !publicClient || !walletClient || !connector) {
79
- return;
80
- }
81
- setIsErrorTx(false);
82
- setIsTxsPending(true);
83
- try {
84
- const swapOption = swapRoutes.flatMap(route => route.fromTokens).find(option => option.address === selectedCurrency);
85
- const isSwapNativeToken = compareAddress(zeroAddress, swapOption?.address || '');
86
- const getSwapTransactions = () => {
87
- if (!swapQuote || !swapOption) {
88
- return [];
89
- }
90
- const swapTransactions = [
91
- // Swap quote optional approve step
92
- ...(swapQuote?.approveData && !isSwapNativeToken
93
- ? [
94
- {
95
- to: swapOption.address,
96
- data: swapQuote.approveData,
97
- chain: chainId
98
- }
99
- ]
100
- : []),
101
- // Swap quote tx
102
- {
103
- to: swapQuote.to,
104
- data: swapQuote.transactionData,
105
- chain: chainId,
106
- ...(isSwapNativeToken
107
- ? {
108
- value: BigInt(swapQuote.transactionValue)
109
- }
110
- : {})
111
- }
112
- ];
113
- return swapTransactions;
114
- };
115
- const walletClientChainId = await walletClient.getChainId();
116
- if (walletClientChainId !== chainId) {
117
- await walletClient.switchChain({ id: chainId });
118
- }
119
- const txs = await sendTransactions({
120
- connector,
121
- walletClient,
122
- publicClient,
123
- chainId,
124
- indexerClient,
125
- senderAddress: userAddress,
126
- transactions: [...getSwapTransactions()]
127
- });
128
- if (txs.length === 0) {
129
- throw new Error('No transactions to send');
130
- }
131
- let txHash;
132
- for (const [index, tx] of txs.entries()) {
133
- const currentTxHash = await tx();
134
- const isLastTransaction = index === txs.length - 1;
135
- if (isLastTransaction) {
136
- txHash = currentTxHash;
137
- }
138
- }
139
- if (!txHash) {
140
- throw new Error('Transaction hash is not available');
141
- }
142
- analytics?.track({
143
- event: 'SEND_TRANSACTION_REQUEST',
144
- props: {
145
- walletClient: connector?._wallet?.id || 'unknown',
146
- source: EVENT_SOURCE,
147
- chainId: String(chainId),
148
- origin: window.location.origin,
149
- txHash,
150
- type: EVENT_TYPES.SWAP_CURRENCY,
151
- buyCurrencyAddress: buyCurrencyAddress,
152
- sellCurrencyAddress: sellCurrencyAddress,
153
- buyCurrencySymbol: currencyInfo?.symbol || '',
154
- sellCurrencySymbol: swapOption?.symbol || ''
155
- },
156
- nums: {
157
- buyCurrencyValue: Number(amount),
158
- buyCurrencyValueDecimal: Number(formatUnits(BigInt(amount), currencyInfo?.decimals || 18)),
159
- sellCurrencyValue: Number(swapOption?.price || 0),
160
- sellCurrencyValueDecimal: Number(formatUnits(BigInt(swapOption?.price || 0), swapOption?.decimals || 18))
161
- }
162
- });
163
- clearCachedBalances();
164
- setNavigation({
165
- location: 'coin-details',
166
- params: {
167
- chainId,
168
- contractAddress,
169
- accountAddress: userAddress
170
- }
171
- });
172
- }
173
- catch (e) {
174
- setIsTxsPending(false);
175
- setIsErrorTx(true);
176
- console.error('Failed to send transactions', e);
177
- }
178
- };
179
- const noOptionsFound = swapRoutes.flatMap(route => route.fromTokens).length === 0;
180
- const SwapContent = () => {
181
- if (isLoading) {
182
- return (_jsx("div", { className: "flex w-full justify-center items-center", children: _jsx(Spinner, {}) }));
183
- }
184
- else if (isErrorSwapRoutes) {
185
- return (_jsx("div", { className: "flex w-full justify-center items-center", children: _jsx(Text, { variant: "normal", color: "primary", children: "A problem occurred while fetching swap options." }) }));
186
- }
187
- else if (noOptionsFound) {
188
- return (_jsx("div", { className: "flex w-full justify-center items-center", children: _jsx(Text, { variant: "normal", color: "primary", children: "No swap option found!" }) }));
189
- }
190
- else {
191
- const buyCurrencySymbol = currencyInfo?.symbol || '';
192
- const buyCurrencyDecimals = currencyInfo?.decimals || 0;
193
- const displayedAmount = formatDisplay(formatUnits(BigInt(amount), buyCurrencyDecimals), {
194
- disableScientificNotation: true,
195
- disableCompactNotation: true,
196
- significantDigits: 6
197
- });
198
- const getButtonLabel = () => {
199
- if (quoteFetchInProgress) {
200
- return 'Preparing swap...';
201
- }
202
- else if (isTxsPending) {
203
- return 'Processing...';
204
- }
205
- else {
206
- return 'Proceed';
207
- }
208
- };
209
- return (_jsxs("div", { className: "flex w-full gap-3 flex-col", children: [_jsxs("div", { className: "flex w-full flex-col gap-2", children: [_jsxs(Text, { variant: "small", color: "primary", children: ["Select a token in your wallet to swap for ", displayedAmount, " ", buyCurrencySymbol, "."] }), swapRoutes
210
- .flatMap(route => route.fromTokens)
211
- .map(swapOption => {
212
- const sellCurrencyAddress = swapOption.address || '';
213
- const currentBalance = tokenBalancesMap.get(swapOption.address.toLowerCase()) ?? 0n;
214
- const isInsufficientBalance = currentBalance < BigInt(swapOption.price || '0');
215
- const swapQuotePriceDisplay = formatUnits(BigInt(swapOption.price || 0), swapOption.decimals || 18);
216
- const formattedPrice = formatDisplay(swapQuotePriceDisplay, {
217
- disableScientificNotation: true,
218
- disableCompactNotation: true,
219
- significantDigits: 6
220
- });
221
- return (_jsx(CryptoOption, { chainId: chainId, currencyName: swapOption.name || swapOption.symbol || '', symbol: swapOption.symbol || '', isSelected: compareAddress(selectedCurrency || '', sellCurrencyAddress), iconUrl: swapOption.logoUri, price: formattedPrice, onClick: () => {
222
- setIsErrorTx(false);
223
- setSelectedCurrency(sellCurrencyAddress);
224
- }, disabled: isTxsPending || isInsufficientBalance, showInsufficientFundsWarning: isInsufficientBalance }, sellCurrencyAddress));
225
- })] }), isErrorTx && (_jsx("div", { className: "w-full", children: _jsx(Text, { color: "negative", variant: "small", children: "A problem occurred while executing the transaction." }) })), isErrorSwapQuote && (_jsx("div", { className: "w-full", children: _jsx(Text, { color: "negative", variant: "small", children: "A problem occurred while fetching swap quote." }) })), showSwitchNetwork && (_jsxs("div", { className: "mt-3", children: [_jsx(Text, { className: "mb-2", variant: "small", color: "primary", children: "The wallet is connected to the wrong network. Please switch network before proceeding" }), _jsx(Button, { className: "mt-2 w-full", variant: "primary", size: "lg", type: "button", label: "Switch Network", onClick: async () => await switchChainAsync({ chainId }), disabled: isCorrectChainId })] })), _jsx(Button, { className: "w-full", type: "button", disabled: noOptionsFound ||
226
- !selectedCurrency ||
227
- quoteFetchInProgress ||
228
- isErrorSwapQuote ||
229
- isTxsPending ||
230
- (!isCorrectChainId && !isConnectorSequenceBased) ||
231
- showSwitchNetwork, variant: "primary", size: "lg", label: getButtonLabel(), onClick: onClickProceed })] }));
232
- }
233
- };
234
- return (_jsx("div", { className: "flex p-5 gap-2 flex-col", children: _jsx(SwapContent, {}) }));
235
- };
236
- //# sourceMappingURL=SwapList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwapList.js","sourceRoot":"","sources":["../../../../src/views/SwapCoin/SwapList.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export interface SwapCoinProps {
2
- contractAddress: string;
3
- chainId: number;
4
- }
5
- export declare const SwapCoin: ({ contractAddress, chainId }: SwapCoinProps) => import("react/jsx-runtime").JSX.Element | null;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/SwapCoin/index.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ,GAAI,8BAA8B,aAAa,mDAyHnE,CAAA"}
@@ -1,77 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { compareAddress, getNativeTokenInfoByChainId } from '@0xsequence/connect';
3
- import { Button, ChevronRightIcon, NumericInput, Text } from '@0xsequence/design-system';
4
- import { useGetCoinPrices, useGetExchangeRate, useGetSingleTokenBalance } from '@0xsequence/hooks';
5
- import { useRef, useState } from 'react';
6
- import { parseUnits, zeroAddress } from 'viem';
7
- import { useAccount, useConfig } from 'wagmi';
8
- import { WalletSelect } from '../../components/Select/WalletSelect.js';
9
- import { SendItemInfo } from '../../components/SendItemInfo.js';
10
- import { useNavigation, useSettings } from '../../hooks/index.js';
11
- import { computeBalanceFiat, limitDecimals } from '../../utils/index.js';
12
- export const SwapCoin = ({ contractAddress, chainId }) => {
13
- const { setNavigation } = useNavigation();
14
- const { chains } = useConfig();
15
- const { address: accountAddress } = useAccount();
16
- const amountInputRef = useRef(null);
17
- const { fiatCurrency } = useSettings();
18
- const [amount, setAmount] = useState('0');
19
- const { data: tokenBalance, isLoading: isLoadingBalances } = useGetSingleTokenBalance({
20
- chainId,
21
- contractAddress,
22
- accountAddress: accountAddress || ''
23
- });
24
- const nativeTokenInfo = getNativeTokenInfoByChainId(chainId, chains);
25
- const { data: coinPrices = [], isLoading: isLoadingCoinPrices } = useGetCoinPrices([
26
- {
27
- chainId,
28
- contractAddress
29
- }
30
- ]);
31
- const { data: conversionRate = 1, isLoading: isLoadingConversionRate } = useGetExchangeRate(fiatCurrency.symbol);
32
- const isLoading = isLoadingBalances || isLoadingCoinPrices || isLoadingConversionRate;
33
- const handleChangeAmount = (ev) => {
34
- const { value } = ev.target;
35
- // Prevent value from having more decimals than the token supports
36
- const formattedValue = limitDecimals(value, decimals);
37
- setAmount(formattedValue);
38
- };
39
- const handleFindQuotesClick = (e) => {
40
- e.preventDefault();
41
- setNavigation({
42
- location: 'swap-coin-list',
43
- params: {
44
- chainId,
45
- contractAddress,
46
- amount: amountRaw.toString()
47
- }
48
- });
49
- };
50
- if (isLoading) {
51
- return null;
52
- }
53
- const isNativeCoin = compareAddress(contractAddress, zeroAddress);
54
- const decimals = isNativeCoin ? nativeTokenInfo.decimals : tokenBalance?.contractInfo?.decimals || 18;
55
- const name = isNativeCoin ? nativeTokenInfo.name : tokenBalance?.contractInfo?.name || '';
56
- const imageUrl = isNativeCoin ? nativeTokenInfo.logoURI : tokenBalance?.contractInfo?.logoURI;
57
- const symbol = isNativeCoin ? nativeTokenInfo.symbol : tokenBalance?.contractInfo?.symbol || '';
58
- const amountToSendFormatted = amount === '' ? '0' : amount;
59
- const amountRaw = parseUnits(amountToSendFormatted, decimals);
60
- const amountToSendFiat = computeBalanceFiat({
61
- balance: {
62
- ...tokenBalance,
63
- balance: amountRaw.toString()
64
- },
65
- prices: coinPrices,
66
- conversionRate,
67
- decimals
68
- });
69
- const isNonZeroAmount = amountRaw > 0n;
70
- return (_jsxs("form", { className: "flex p-4 pt-0 gap-4 flex-col", onSubmit: handleFindQuotesClick, children: [_jsx(WalletSelect, { selectedWallet: String(accountAddress), onClick: () => { }, disabled: true }), _jsxs("div", { className: "flex bg-background-secondary rounded-xl p-4 gap-2 flex-col", children: [_jsx(SendItemInfo, { imageUrl: imageUrl, decimals: decimals, name: name, symbol: symbol, balance: tokenBalance?.balance || '0', fiatValue: computeBalanceFiat({
71
- balance: tokenBalance,
72
- prices: coinPrices,
73
- conversionRate,
74
- decimals
75
- }), chainId: chainId, balanceSuffix: "owned" }), _jsx(NumericInput, { ref: amountInputRef, name: "amount", value: amount, onChange: handleChangeAmount, controls: _jsxs(_Fragment, { children: [_jsx(Text, { className: "whitespace-nowrap", variant: "small", color: "muted", children: `~${fiatCurrency.sign}${amountToSendFiat}` }), _jsx(Text, { variant: "xlarge", fontWeight: "bold", color: "text100", children: symbol })] }) })] }), _jsx("div", { className: "flex items-center justify-center", children: _jsx(Button, { className: "text-primary w-full h-11", variant: "primary", size: "lg", type: "submit", disabled: !isNonZeroAmount, label: "Continue", rightIcon: ChevronRightIcon }) })] }));
76
- };
77
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/SwapCoin/index.tsx"],"names":[],"mappings":"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"}