@rango-dev/widget-embedded 0.17.1-next.3 → 0.17.1-next.30
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/QueueManager.d.ts +5 -2
- package/dist/QueueManager.d.ts.map +1 -1
- package/dist/components/AppRouter.d.ts +0 -2
- package/dist/components/AppRouter.d.ts.map +1 -1
- package/dist/components/AppRoutes.d.ts +1 -6
- package/dist/components/AppRoutes.d.ts.map +1 -1
- package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +56 -56
- package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
- package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts +0 -2
- package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts.map +1 -1
- package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
- package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts +1 -4
- package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts.map +1 -1
- package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
- package/dist/components/Layout/Layout.d.ts.map +1 -1
- package/dist/components/Layout/Layout.types.d.ts +2 -2
- package/dist/components/Layout/Layout.types.d.ts.map +1 -1
- package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
- package/dist/components/Quote/Quote.d.ts.map +1 -1
- package/dist/components/Quote/Quote.styles.d.ts +159 -0
- package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
- package/dist/components/Quote/Quote.types.d.ts +0 -1
- package/dist/components/Quote/Quote.types.d.ts.map +1 -1
- package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -1
- package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -1
- package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
- package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +1 -0
- package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -1
- package/dist/components/Slippage/Slippage.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
- package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
- package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
- package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts +1 -1
- package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts.map +1 -1
- package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +1 -1
- package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
- package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
- package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
- package/dist/components/TokenList/TokenList.d.ts.map +1 -1
- package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
- package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
- package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
- package/dist/components/TokenList/TokenList.types.d.ts +3 -9
- package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
- package/dist/components/TokenList/index.d.ts +0 -1
- package/dist/components/TokenList/index.d.ts.map +1 -1
- package/dist/components/UpdateUrl.d.ts +1 -6
- package/dist/components/UpdateUrl.d.ts.map +1 -1
- package/dist/components/WidgetEvents.d.ts.map +1 -1
- package/dist/constants/errors.d.ts.map +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/navigationRoutes.d.ts +1 -2
- package/dist/constants/navigationRoutes.d.ts.map +1 -1
- package/dist/constants/searchParams.d.ts +2 -1
- package/dist/constants/searchParams.d.ts.map +1 -1
- package/dist/containers/App/App.d.ts +3 -0
- package/dist/containers/App/App.d.ts.map +1 -0
- package/dist/containers/App/App.styles.d.ts +158 -0
- package/dist/containers/App/App.styles.d.ts.map +1 -0
- package/dist/containers/App/index.d.ts +2 -0
- package/dist/containers/App/index.d.ts.map +1 -0
- package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
- package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +316 -0
- package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
- package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +3 -0
- package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
- package/dist/containers/Wallets/Wallets.d.ts +6 -0
- package/dist/containers/Wallets/Wallets.d.ts.map +1 -0
- package/dist/containers/Wallets/Wallets.types.d.ts +11 -0
- package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -0
- package/dist/containers/Wallets/index.d.ts +2 -0
- package/dist/containers/Wallets/index.d.ts.map +1 -0
- package/dist/containers/Widget/Widget.d.ts +5 -0
- package/dist/containers/Widget/Widget.d.ts.map +1 -0
- package/dist/containers/Widget/Widget.types.d.ts +5 -0
- package/dist/containers/Widget/Widget.types.d.ts.map +1 -0
- package/dist/containers/Widget/index.d.ts +3 -0
- package/dist/containers/Widget/index.d.ts.map +1 -0
- package/dist/containers/WidgetInfo/WidgetInfo.d.ts +6 -0
- package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -0
- package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +20 -0
- package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts.map +1 -0
- package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +21 -0
- package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -0
- package/dist/containers/WidgetInfo/index.d.ts +2 -0
- package/dist/containers/WidgetInfo/index.d.ts.map +1 -0
- package/dist/containers/WidgetProvider/WidgetProvider.d.ts +5 -0
- package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
- package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +7 -0
- package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -0
- package/dist/containers/WidgetProvider/index.d.ts +2 -0
- package/dist/containers/WidgetProvider/index.d.ts.map +1 -0
- package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -1
- package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +6 -3
- package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -1
- package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts +1 -1
- package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -1
- package/dist/hooks/useForceAutoConnect.d.ts +2 -0
- package/dist/hooks/useForceAutoConnect.d.ts.map +1 -0
- package/dist/hooks/useLanguage.d.ts +1 -1
- package/dist/hooks/useLanguage.d.ts.map +1 -1
- package/dist/hooks/useNavigateBack.d.ts +1 -3
- package/dist/hooks/useNavigateBack.d.ts.map +1 -1
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +3 -5
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +1 -0
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +5 -1
- package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
- package/dist/hooks/useSwapInput.d.ts.map +1 -1
- package/dist/hooks/useSyncStoresWithConfig.d.ts +1 -2
- package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
- package/dist/hooks/useTheme.d.ts +1 -1
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useWalletList.d.ts.map +1 -1
- package/dist/index.d.ts +20 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/pages/ConfirmSwapPage.d.ts +1 -6
- package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
- package/dist/pages/HistoryPage.d.ts.map +1 -1
- package/dist/pages/Home.d.ts.map +1 -1
- package/dist/pages/LanguagePage.d.ts.map +1 -1
- package/dist/pages/LiquiditySourcePage.d.ts +1 -2
- package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
- package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
- package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
- package/dist/pages/SettingsPage.d.ts +1 -6
- package/dist/pages/SettingsPage.d.ts.map +1 -1
- package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
- package/dist/pages/ThemePage.d.ts.map +1 -1
- package/dist/pages/WalletsPage.d.ts +1 -8
- package/dist/pages/WalletsPage.d.ts.map +1 -1
- package/dist/store/AppStore.d.ts +47 -0
- package/dist/store/AppStore.d.ts.map +1 -0
- package/dist/store/app.d.ts +41 -22
- package/dist/store/app.d.ts.map +1 -1
- package/dist/store/notification.d.ts +4 -3
- package/dist/store/notification.d.ts.map +1 -1
- package/dist/store/quote.d.ts +23 -16
- package/dist/store/quote.d.ts.map +1 -1
- package/dist/store/slices/config.d.ts +3 -2
- package/dist/store/slices/config.d.ts.map +1 -1
- package/dist/store/slices/data.d.ts +3 -0
- package/dist/store/slices/data.d.ts.map +1 -1
- package/dist/store/slices/settings.d.ts +39 -0
- package/dist/store/slices/settings.d.ts.map +1 -0
- package/dist/store/ui.d.ts +2 -1
- package/dist/store/ui.d.ts.map +1 -1
- package/dist/store/wallets.d.ts +14 -9
- package/dist/store/wallets.d.ts.map +1 -1
- package/dist/types/config.d.ts +38 -5
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/swap.d.ts +4 -14
- package/dist/types/swap.d.ts.map +1 -1
- package/dist/types/wallets.d.ts +15 -1
- package/dist/types/wallets.d.ts.map +1 -1
- package/dist/utils/colors.d.ts.map +1 -1
- package/dist/utils/configs.d.ts +1 -0
- package/dist/utils/configs.d.ts.map +1 -1
- package/dist/utils/meta.d.ts +2 -1
- package/dist/utils/meta.d.ts.map +1 -1
- package/dist/utils/providers.d.ts +2 -2
- package/dist/utils/providers.d.ts.map +1 -1
- package/dist/utils/queue.d.ts +2 -2
- package/dist/utils/queue.d.ts.map +1 -1
- package/dist/utils/quote.d.ts +1 -1
- package/dist/utils/quote.d.ts.map +1 -1
- package/dist/utils/settings.d.ts +6 -2
- package/dist/utils/settings.d.ts.map +1 -1
- package/dist/utils/swap.d.ts +16 -7
- package/dist/utils/swap.d.ts.map +1 -1
- package/dist/utils/time.d.ts +1 -1
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/wallets.d.ts +7 -9
- package/dist/utils/wallets.d.ts.map +1 -1
- package/package.json +12 -10
- package/src/QueueManager.tsx +18 -17
- package/src/components/AppRouter.tsx +8 -32
- package/src/components/AppRoutes.tsx +57 -69
- package/src/components/BlockchainList/BlockchainList.tsx +4 -4
- package/src/components/BlockchainsSection/BlockchainsSection.tsx +4 -4
- package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +16 -19
- package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.types.ts +0 -2
- package/src/components/ConfirmWalletsModal/WalletList.tsx +6 -5
- package/src/components/ConfirmWalletsModal/WalletList.type.ts +1 -4
- package/src/components/HeaderButtons/HomeButtons.tsx +28 -18
- package/src/components/Layout/Layout.tsx +20 -7
- package/src/components/Layout/Layout.types.ts +2 -2
- package/src/components/NoResult/NoResult.helpers.ts +12 -12
- package/src/components/NoResult/NoResult.tsx +6 -6
- package/src/components/NotificationContent/NotificationContent.tsx +5 -3
- package/src/components/Quote/Quote.styles.ts +28 -1
- package/src/components/Quote/Quote.tsx +100 -34
- package/src/components/Quote/Quote.types.ts +0 -1
- package/src/components/Quote/QuoteSkeleton.tsx +1 -1
- package/src/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx +1 -1
- package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +11 -4
- package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +8 -1
- package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +13 -13
- package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +1 -0
- package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +3 -3
- package/src/components/Slippage/Slippage.tsx +3 -5
- package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +0 -4
- package/src/components/SwapDetails/SwapDetails.helpers.tsx +1 -1
- package/src/components/SwapDetails/SwapDetails.tsx +19 -39
- package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.Warning.tsx +1 -1
- package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +4 -3
- package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
- package/src/components/SwapDetailsModal/SwapDetailsModal.helpers.tsx +1 -1
- package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +1 -1
- package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +1 -1
- package/src/components/SwapsGroup/SwapsGroup.styles.ts +8 -1
- package/src/components/SwapsGroup/SwapsGroup.tsx +0 -2
- package/src/components/TokenList/TokenList.helpers.ts +2 -2
- package/src/components/TokenList/TokenList.styles.ts +14 -2
- package/src/components/TokenList/TokenList.tsx +16 -19
- package/src/components/TokenList/TokenList.types.ts +3 -10
- package/src/components/TokenList/index.ts +0 -1
- package/src/components/UpdateUrl.tsx +23 -18
- package/src/components/WidgetEvents.tsx +4 -2
- package/src/constants/errors.ts +9 -5
- package/src/constants/index.ts +1 -0
- package/src/constants/navigationRoutes.ts +7 -8
- package/src/constants/searchParams.ts +1 -0
- package/src/containers/App/App.styles.ts +18 -0
- package/src/containers/App/App.tsx +52 -0
- package/src/containers/App/index.ts +1 -0
- package/src/containers/QuoteInfo/QuoteInfo.styles.ts +17 -1
- package/src/containers/QuoteInfo/QuoteInfo.tsx +44 -43
- package/src/containers/QuoteInfo/QuoteInfo.types.ts +3 -0
- package/src/{Wallets.tsx → containers/Wallets/Wallets.tsx} +48 -34
- package/src/containers/Wallets/Wallets.types.ts +12 -0
- package/src/containers/Wallets/index.ts +1 -0
- package/src/containers/Widget/Widget.tsx +19 -0
- package/src/containers/Widget/Widget.types.ts +5 -0
- package/src/containers/Widget/index.ts +2 -0
- package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +64 -0
- package/src/containers/WidgetInfo/WidgetInfo.tsx +62 -0
- package/src/containers/WidgetInfo/WidgetInfo.types.ts +21 -0
- package/src/containers/WidgetInfo/index.ts +1 -0
- package/src/containers/WidgetProvider/WidgetProvider.tsx +28 -0
- package/src/containers/WidgetProvider/WidgetProvider.types.ts +7 -0
- package/src/containers/WidgetProvider/index.ts +1 -0
- package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +15 -11
- package/src/hooks/useConfirmSwap/useConfirmSwap.ts +25 -24
- package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +1 -1
- package/src/hooks/useForceAutoConnect.ts +27 -0
- package/src/hooks/useLanguage.ts +4 -5
- package/src/hooks/useNavigateBack.ts +3 -52
- package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
- package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +37 -7
- package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +60 -0
- package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +78 -3
- package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +15 -6
- package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +6 -1
- package/src/hooks/useSwapInput.ts +89 -30
- package/src/hooks/useSyncStoresWithConfig.ts +38 -22
- package/src/hooks/useTheme.ts +4 -5
- package/src/hooks/useWalletList.ts +3 -5
- package/src/index.ts +53 -5
- package/src/pages/ConfirmSwapPage.tsx +39 -24
- package/src/pages/HistoryPage.tsx +2 -7
- package/src/pages/Home.tsx +58 -88
- package/src/pages/LanguagePage.tsx +0 -5
- package/src/pages/LiquiditySourcePage.tsx +24 -37
- package/src/pages/SelectBlockchainPage.tsx +28 -21
- package/src/pages/SelectSwapItemsPage.tsx +10 -27
- package/src/pages/SettingsPage.tsx +28 -24
- package/src/pages/SwapDetailsPage.tsx +6 -7
- package/src/pages/ThemePage.tsx +2 -7
- package/src/pages/WalletsPage.tsx +4 -15
- package/src/services/httpService.ts +1 -1
- package/src/store/AppStore.tsx +41 -0
- package/src/store/app.ts +44 -6
- package/src/store/quote.ts +29 -26
- package/src/store/slices/config.ts +25 -15
- package/src/store/slices/data.ts +64 -29
- package/src/store/slices/settings.ts +168 -0
- package/src/store/wallets.ts +68 -37
- package/src/types/config.ts +50 -5
- package/src/types/swap.ts +4 -13
- package/src/types/wallets.ts +18 -1
- package/src/utils/colors.ts +2 -1
- package/src/utils/configs.ts +2 -1
- package/src/utils/date.ts +1 -1
- package/src/utils/meta.ts +8 -1
- package/src/utils/providers.ts +8 -5
- package/src/utils/queue.ts +2 -2
- package/src/utils/quote.ts +7 -7
- package/src/utils/settings.ts +17 -10
- package/src/utils/swap.ts +59 -55
- package/src/utils/time.ts +1 -1
- package/src/utils/wallets.ts +107 -149
- package/dist/Wallets.d.ts +0 -17
- package/dist/Wallets.d.ts.map +0 -1
- package/dist/Widget.d.ts +0 -9
- package/dist/Widget.d.ts.map +0 -1
- package/dist/store/meta.d.ts +0 -23
- package/dist/store/meta.d.ts.map +0 -1
- package/dist/store/settings.d.ts +0 -81
- package/dist/store/settings.d.ts.map +0 -1
- package/src/Widget.tsx +0 -119
- package/src/store/meta.ts +0 -39
- package/src/store/settings.ts +0 -158
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { QuoteError, QuoteWarning } from '../types';
|
|
2
|
+
import type { Token } from 'rango-sdk';
|
|
2
3
|
|
|
3
|
-
import {
|
|
4
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
4
5
|
|
|
5
|
-
import {
|
|
6
|
+
import { useAppStore } from '../store/AppStore';
|
|
6
7
|
import { useQuoteStore } from '../store/quote';
|
|
7
|
-
import { useSettingsStore } from '../store/settings';
|
|
8
8
|
import { QuoteErrorType } from '../types';
|
|
9
9
|
import { debounce } from '../utils/common';
|
|
10
10
|
import { isPositiveNumber } from '../utils/numbers';
|
|
11
11
|
import { generateQuoteWarnings } from '../utils/quote';
|
|
12
|
+
import { isFeatureEnabled } from '../utils/settings';
|
|
12
13
|
import { createQuoteRequestBody } from '../utils/swap';
|
|
13
14
|
import { tokensAreEqual } from '../utils/wallets';
|
|
14
15
|
|
|
@@ -19,6 +20,12 @@ import {
|
|
|
19
20
|
import { useFetchQuote } from './useFetchQuote';
|
|
20
21
|
|
|
21
22
|
const DEBOUNCE_DELAY = 600;
|
|
23
|
+
const FIRST_INDEX = 0;
|
|
24
|
+
|
|
25
|
+
type FetchQuoteParams = Omit<
|
|
26
|
+
Parameters<typeof createQuoteRequestBody>[typeof FIRST_INDEX],
|
|
27
|
+
'fromToken' | 'toToken'
|
|
28
|
+
> & { fromToken: Token | null; toToken: Token | null };
|
|
22
29
|
|
|
23
30
|
type UseSwapInput = {
|
|
24
31
|
fetch: () => void;
|
|
@@ -33,6 +40,9 @@ type UseSwapInput = {
|
|
|
33
40
|
*/
|
|
34
41
|
export function useSwapInput(): UseSwapInput {
|
|
35
42
|
const { fetch: fetchQuote, cancelFetch } = useFetchQuote();
|
|
43
|
+
const { liquiditySources, enableNewLiquiditySources, features } =
|
|
44
|
+
useAppStore().config;
|
|
45
|
+
const tokens = useAppStore().tokens();
|
|
36
46
|
const {
|
|
37
47
|
fromToken,
|
|
38
48
|
toToken,
|
|
@@ -41,9 +51,6 @@ export function useSwapInput(): UseSwapInput {
|
|
|
41
51
|
resetQuote,
|
|
42
52
|
setQuote,
|
|
43
53
|
} = useQuoteStore();
|
|
44
|
-
const {
|
|
45
|
-
meta: { tokens },
|
|
46
|
-
} = useMetaStore();
|
|
47
54
|
const {
|
|
48
55
|
slippage,
|
|
49
56
|
customSlippage,
|
|
@@ -51,11 +58,10 @@ export function useSwapInput(): UseSwapInput {
|
|
|
51
58
|
affiliateRef,
|
|
52
59
|
affiliateWallets,
|
|
53
60
|
disabledLiquiditySources,
|
|
54
|
-
} =
|
|
61
|
+
} = useAppStore();
|
|
55
62
|
const [loading, setLoading] = useState(false);
|
|
56
63
|
const [error, setError] = useState<QuoteError | null>(null);
|
|
57
64
|
const [warning, setWarning] = useState<QuoteWarning | null>(null);
|
|
58
|
-
const prevDisabledLiquiditySources = useRef(disabledLiquiditySources);
|
|
59
65
|
const userSlippage = customSlippage ?? slippage;
|
|
60
66
|
const hasTokensValue = !fromToken || !toToken;
|
|
61
67
|
const shouldSkipRequest =
|
|
@@ -69,22 +75,39 @@ export function useSwapInput(): UseSwapInput {
|
|
|
69
75
|
setWarning(null);
|
|
70
76
|
};
|
|
71
77
|
|
|
72
|
-
const fetch
|
|
78
|
+
const fetch = (params: FetchQuoteParams) => {
|
|
79
|
+
const {
|
|
80
|
+
fromToken,
|
|
81
|
+
toToken,
|
|
82
|
+
inputAmount,
|
|
83
|
+
liquiditySources,
|
|
84
|
+
excludeLiquiditySources,
|
|
85
|
+
disabledLiquiditySources,
|
|
86
|
+
slippage,
|
|
87
|
+
affiliateRef,
|
|
88
|
+
affiliatePercent,
|
|
89
|
+
affiliateWallets,
|
|
90
|
+
} = params;
|
|
73
91
|
if (!loading) {
|
|
74
92
|
resetState(true);
|
|
75
93
|
}
|
|
76
|
-
if (!shouldSkipRequest) {
|
|
94
|
+
if (!shouldSkipRequest && fromToken && toToken) {
|
|
77
95
|
resetQuote();
|
|
78
96
|
const requestBody = createQuoteRequestBody({
|
|
79
97
|
fromToken,
|
|
80
98
|
toToken,
|
|
81
99
|
inputAmount,
|
|
100
|
+
liquiditySources,
|
|
101
|
+
excludeLiquiditySources,
|
|
82
102
|
disabledLiquiditySources,
|
|
83
|
-
slippage
|
|
103
|
+
slippage,
|
|
84
104
|
affiliateRef,
|
|
85
105
|
affiliatePercent,
|
|
86
106
|
affiliateWallets,
|
|
87
107
|
});
|
|
108
|
+
if (isFeatureEnabled('experimentalRoute', features)) {
|
|
109
|
+
requestBody.experimental = true;
|
|
110
|
+
}
|
|
88
111
|
fetchQuote(requestBody)
|
|
89
112
|
.then((res) => {
|
|
90
113
|
setLoading(false);
|
|
@@ -114,11 +137,14 @@ export function useSwapInput(): UseSwapInput {
|
|
|
114
137
|
}
|
|
115
138
|
};
|
|
116
139
|
|
|
117
|
-
const debouncedFetch =
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
140
|
+
const debouncedFetch = useCallback(
|
|
141
|
+
debounce((params: FetchQuoteParams) => {
|
|
142
|
+
if (!shouldSkipRequest) {
|
|
143
|
+
fetch(params);
|
|
144
|
+
}
|
|
145
|
+
}, DEBOUNCE_DELAY),
|
|
146
|
+
[shouldSkipRequest]
|
|
147
|
+
);
|
|
122
148
|
|
|
123
149
|
useEffect(() => {
|
|
124
150
|
if (!isPositiveNumber(inputAmount) || inputUsdValue?.eq(0)) {
|
|
@@ -131,20 +157,53 @@ export function useSwapInput(): UseSwapInput {
|
|
|
131
157
|
}
|
|
132
158
|
resetQuote();
|
|
133
159
|
resetState(true);
|
|
134
|
-
debouncedFetch(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
160
|
+
debouncedFetch({
|
|
161
|
+
inputAmount,
|
|
162
|
+
fromToken,
|
|
163
|
+
toToken,
|
|
164
|
+
liquiditySources,
|
|
165
|
+
excludeLiquiditySources: enableNewLiquiditySources,
|
|
166
|
+
disabledLiquiditySources,
|
|
167
|
+
slippage: userSlippage,
|
|
168
|
+
affiliateRef,
|
|
169
|
+
affiliatePercent,
|
|
170
|
+
affiliateWallets,
|
|
171
|
+
});
|
|
146
172
|
return cancelFetch;
|
|
147
|
-
}, [
|
|
173
|
+
}, [
|
|
174
|
+
inputAmount,
|
|
175
|
+
fromToken?.symbol,
|
|
176
|
+
fromToken?.address,
|
|
177
|
+
fromToken?.blockchain,
|
|
178
|
+
toToken?.symbol,
|
|
179
|
+
toToken?.address,
|
|
180
|
+
toToken?.blockchain,
|
|
181
|
+
shouldSkipRequest,
|
|
182
|
+
liquiditySources?.length,
|
|
183
|
+
enableNewLiquiditySources,
|
|
184
|
+
disabledLiquiditySources.length,
|
|
185
|
+
userSlippage,
|
|
186
|
+
affiliateRef,
|
|
187
|
+
affiliatePercent,
|
|
188
|
+
JSON.stringify(affiliateWallets),
|
|
189
|
+
]);
|
|
148
190
|
|
|
149
|
-
return {
|
|
191
|
+
return {
|
|
192
|
+
fetch: () =>
|
|
193
|
+
fetch({
|
|
194
|
+
inputAmount,
|
|
195
|
+
fromToken,
|
|
196
|
+
toToken,
|
|
197
|
+
liquiditySources,
|
|
198
|
+
excludeLiquiditySources: enableNewLiquiditySources,
|
|
199
|
+
disabledLiquiditySources,
|
|
200
|
+
slippage: userSlippage,
|
|
201
|
+
affiliateRef,
|
|
202
|
+
affiliatePercent,
|
|
203
|
+
affiliateWallets,
|
|
204
|
+
}),
|
|
205
|
+
loading,
|
|
206
|
+
error,
|
|
207
|
+
warning,
|
|
208
|
+
};
|
|
150
209
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import type { WidgetConfig } from '../types';
|
|
2
1
|
import type { Asset } from 'rango-sdk';
|
|
3
2
|
|
|
4
|
-
import { useEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
5
4
|
|
|
6
|
-
import {
|
|
5
|
+
import { useAppStore } from '../store/AppStore';
|
|
7
6
|
import { useQuoteStore } from '../store/quote';
|
|
8
|
-
import { useSettingsStore } from '../store/settings';
|
|
9
7
|
import { tokensAreEqual } from '../utils/wallets';
|
|
10
8
|
|
|
11
|
-
export function useSyncStoresWithConfig(
|
|
9
|
+
export function useSyncStoresWithConfig() {
|
|
12
10
|
const {
|
|
13
11
|
setInputAmount,
|
|
14
12
|
setToToken,
|
|
@@ -21,13 +19,13 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
21
19
|
toBlockchain,
|
|
22
20
|
} = useQuoteStore();
|
|
23
21
|
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
const config = useAppStore().config;
|
|
23
|
+
const fetchMetaStatus = useAppStore().fetchStatus;
|
|
24
|
+
const blockchains = useAppStore().blockchains();
|
|
25
|
+
const tokens = useAppStore().tokens();
|
|
28
26
|
|
|
29
27
|
const { setAffiliateRef, setAffiliatePercent, setAffiliateWallets } =
|
|
30
|
-
|
|
28
|
+
useAppStore();
|
|
31
29
|
|
|
32
30
|
const fromTokensConfig = useMemo(
|
|
33
31
|
() => config?.from?.tokens,
|
|
@@ -54,8 +52,15 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
54
52
|
setInputAmount(config?.amount?.toString() || '');
|
|
55
53
|
}, [config?.amount]);
|
|
56
54
|
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
/*
|
|
56
|
+
* We update quote tokens in two scenarios.
|
|
57
|
+
* If default values exist in widget config or search parameters exist in URL.
|
|
58
|
+
* The logic for updating quote store exists in two useEffect in two locations, and they run in order.If default tokens for quote exist in widget config and also exist in URL, widget config values take precedence over URL values, and URL search parameters don’t affect the widget.
|
|
59
|
+
* Using useLayoutEffect causes widget config values to apply first.
|
|
60
|
+
* We may consider replacing this with a better solution in the future.
|
|
61
|
+
*/
|
|
62
|
+
useLayoutEffect(() => {
|
|
63
|
+
if (fetchMetaStatus === 'success') {
|
|
59
64
|
const chain = blockchains.find(
|
|
60
65
|
(chain) => chain.name === config?.from?.blockchain
|
|
61
66
|
);
|
|
@@ -67,8 +72,10 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
67
72
|
setFromBlockchain(chain ?? null);
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
if (token
|
|
71
|
-
setFromToken(token
|
|
75
|
+
if (token) {
|
|
76
|
+
setFromToken({ token, meta: { blockchains, tokens } });
|
|
77
|
+
} else if (!token && prevConfigFromToken.current) {
|
|
78
|
+
setFromToken({ token: null });
|
|
72
79
|
}
|
|
73
80
|
|
|
74
81
|
prevConfigFromBlockchain.current = config?.from?.blockchain;
|
|
@@ -79,13 +86,13 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
79
86
|
config?.from?.token?.address,
|
|
80
87
|
config?.from?.token?.blockchain,
|
|
81
88
|
config?.from?.blockchain,
|
|
82
|
-
|
|
89
|
+
fetchMetaStatus,
|
|
83
90
|
]);
|
|
84
91
|
|
|
85
92
|
useEffect(() => {
|
|
86
93
|
if (fromToken && fromTokensConfig) {
|
|
87
94
|
if (!fromTokensConfig.some((token) => tokensAreEqual(token, fromToken))) {
|
|
88
|
-
setFromToken(null);
|
|
95
|
+
setFromToken({ token: null });
|
|
89
96
|
}
|
|
90
97
|
}
|
|
91
98
|
|
|
@@ -99,7 +106,7 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
99
106
|
useEffect(() => {
|
|
100
107
|
if (toToken && toTokensConfig) {
|
|
101
108
|
if (!toTokensConfig.some((token) => tokensAreEqual(token, toToken))) {
|
|
102
|
-
setToToken(null);
|
|
109
|
+
setToToken({ token: null });
|
|
103
110
|
}
|
|
104
111
|
}
|
|
105
112
|
|
|
@@ -110,8 +117,15 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
110
117
|
}
|
|
111
118
|
}, [toTokensConfig, toBlockchainsConfig]);
|
|
112
119
|
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
/*
|
|
121
|
+
* We update quote tokens in two scenarios.
|
|
122
|
+
* If default values exist in widget config or search parameters exist in URL.
|
|
123
|
+
* The logic for updating quote store exists in two useEffect in two locations, and they run in order.If default tokens for quote exist in widget config and also exist in URL, widget config values take precedence over URL values, and URL search parameters don’t affect the widget.
|
|
124
|
+
* Using useLayoutEffect causes widget config values to apply first.
|
|
125
|
+
* We may consider replacing this with a better solution in the future.
|
|
126
|
+
*/
|
|
127
|
+
useLayoutEffect(() => {
|
|
128
|
+
if (fetchMetaStatus === 'success') {
|
|
115
129
|
const chain = blockchains.find(
|
|
116
130
|
(chain) => chain.name === config?.to?.blockchain
|
|
117
131
|
);
|
|
@@ -123,8 +137,10 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
123
137
|
setToBlockchain(chain ?? null);
|
|
124
138
|
}
|
|
125
139
|
|
|
126
|
-
if (token
|
|
127
|
-
setToToken(token
|
|
140
|
+
if (token) {
|
|
141
|
+
setToToken({ token, meta: { blockchains, tokens } });
|
|
142
|
+
} else if (!token && prevConfigToToken.current) {
|
|
143
|
+
setToToken({ token: null });
|
|
128
144
|
}
|
|
129
145
|
|
|
130
146
|
prevConfigToBlockchain.current = config?.to?.blockchain;
|
|
@@ -135,7 +151,7 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
|
|
|
135
151
|
config?.to?.token?.address,
|
|
136
152
|
config?.to?.token?.blockchain,
|
|
137
153
|
config?.to?.blockchain,
|
|
138
|
-
|
|
154
|
+
fetchMetaStatus,
|
|
139
155
|
]);
|
|
140
156
|
|
|
141
157
|
useEffect(() => {
|
package/src/hooks/useTheme.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-magic-numbers */
|
|
2
|
-
import type { WidgetTheme } from '../types';
|
|
3
|
-
|
|
4
2
|
import {
|
|
5
3
|
createTheme,
|
|
6
4
|
darkTheme as defaultDarkTheme,
|
|
@@ -8,7 +6,8 @@ import {
|
|
|
8
6
|
} from '@rango-dev/ui';
|
|
9
7
|
import { useEffect, useState } from 'react';
|
|
10
8
|
|
|
11
|
-
import {
|
|
9
|
+
import { useAppStore } from '../store/AppStore';
|
|
10
|
+
import { type WidgetTheme } from '../types';
|
|
12
11
|
import {
|
|
13
12
|
DEFAULT_FONT_FAMILY,
|
|
14
13
|
DEFAULT_PRIMARY_RADIUS,
|
|
@@ -26,8 +25,8 @@ export function useTheme(props: WidgetTheme) {
|
|
|
26
25
|
} = props;
|
|
27
26
|
|
|
28
27
|
const [OSTheme, setOSTheme] = useState('light');
|
|
29
|
-
|
|
30
|
-
const setTheme =
|
|
28
|
+
|
|
29
|
+
const { setTheme, theme } = useAppStore();
|
|
31
30
|
|
|
32
31
|
const { dark, light } = customizedThemeTokens(colors);
|
|
33
32
|
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from '@rango-dev/wallets-shared';
|
|
11
11
|
import { useEffect, useState } from 'react';
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import { useAppStore } from '../store/AppStore';
|
|
14
14
|
import { useWalletsStore } from '../store/wallets';
|
|
15
15
|
import { configWalletsToWalletName } from '../utils/providers';
|
|
16
16
|
import {
|
|
@@ -37,9 +37,7 @@ export function useWalletList(params: Params) {
|
|
|
37
37
|
const { config, chain, onBeforeConnect, onConnect } = params;
|
|
38
38
|
const { state, disconnect, getWalletInfo, connect } = useWallets();
|
|
39
39
|
const { connectedWallets } = useWalletsStore();
|
|
40
|
-
const
|
|
41
|
-
const multiWallets =
|
|
42
|
-
typeof config?.multiWallets === 'undefined' ? true : config.multiWallets;
|
|
40
|
+
const blockchains = useAppStore().blockchains();
|
|
43
41
|
|
|
44
42
|
/** It can be what has been set by widget config or as a fallback we use all the supported wallets by our library */
|
|
45
43
|
const listAvailableWalletTypes =
|
|
@@ -76,7 +74,7 @@ export function useWalletList(params: Params) {
|
|
|
76
74
|
const atLeastOneWalletIsConnected = !!wallets.find(
|
|
77
75
|
(w) => w.state === WalletState.CONNECTED
|
|
78
76
|
);
|
|
79
|
-
if (!multiWallets && atLeastOneWalletIsConnected) {
|
|
77
|
+
if (!config?.multiWallets && atLeastOneWalletIsConnected) {
|
|
80
78
|
return;
|
|
81
79
|
}
|
|
82
80
|
onBeforeConnect?.(type);
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { WidgetProps } from './containers/Widget';
|
|
2
|
+
import type { ConnectedWallet } from './store/wallets';
|
|
1
3
|
import type {
|
|
2
4
|
BlockchainAndTokenConfig,
|
|
3
5
|
WidgetColors,
|
|
@@ -5,10 +7,12 @@ import type {
|
|
|
5
7
|
WidgetConfig,
|
|
6
8
|
WidgetTheme,
|
|
7
9
|
} from './types';
|
|
8
|
-
import type { WidgetProps } from './Widget';
|
|
9
10
|
import type {
|
|
11
|
+
EventSeverity,
|
|
12
|
+
PendingSwapWithQueueID,
|
|
10
13
|
Route,
|
|
11
14
|
RouteEvent,
|
|
15
|
+
RouteExecutionEvents,
|
|
12
16
|
RouteFailedEvent,
|
|
13
17
|
RouteStartedEvent,
|
|
14
18
|
RouteSucceededEvent,
|
|
@@ -27,7 +31,16 @@ import type {
|
|
|
27
31
|
EventHandler as HandleWalletsUpdate,
|
|
28
32
|
ProviderInterface,
|
|
29
33
|
} from '@rango-dev/wallets-react';
|
|
30
|
-
import type {
|
|
34
|
+
import type {
|
|
35
|
+
WalletInfo,
|
|
36
|
+
WalletState,
|
|
37
|
+
WalletType,
|
|
38
|
+
} from '@rango-dev/wallets-shared';
|
|
39
|
+
import type {
|
|
40
|
+
PendingSwap,
|
|
41
|
+
PendingSwapNetworkStatus,
|
|
42
|
+
PendingSwapStep,
|
|
43
|
+
} from 'rango-types';
|
|
31
44
|
|
|
32
45
|
import {
|
|
33
46
|
MainEvents,
|
|
@@ -37,10 +50,18 @@ import {
|
|
|
37
50
|
StepExecutionEventStatus,
|
|
38
51
|
useEvents as useWidgetEvents,
|
|
39
52
|
} from '@rango-dev/queue-manager-rango-preset';
|
|
40
|
-
import {
|
|
53
|
+
import {
|
|
54
|
+
readAccountAddress,
|
|
55
|
+
useWallets,
|
|
56
|
+
Events as WalletEvents,
|
|
57
|
+
} from '@rango-dev/wallets-react';
|
|
58
|
+
import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
|
|
41
59
|
|
|
42
|
-
import { WidgetWallets } from './Wallets';
|
|
43
|
-
import { Widget } from './Widget';
|
|
60
|
+
import { WidgetWallets } from './containers/Wallets';
|
|
61
|
+
import { Widget } from './containers/Widget';
|
|
62
|
+
import { useWidget } from './containers/WidgetInfo';
|
|
63
|
+
import { WidgetProvider } from './containers/WidgetProvider';
|
|
64
|
+
import { customizedThemeTokens } from './utils/ui';
|
|
44
65
|
|
|
45
66
|
export type {
|
|
46
67
|
WidgetConfig,
|
|
@@ -67,15 +88,42 @@ export type {
|
|
|
67
88
|
StepApprovalTxSucceededEvent,
|
|
68
89
|
StepOutputRevealedEvent,
|
|
69
90
|
HandleWalletsUpdate,
|
|
91
|
+
ConnectedWallet,
|
|
70
92
|
};
|
|
71
93
|
export {
|
|
72
94
|
Widget,
|
|
95
|
+
/**
|
|
96
|
+
* @deprecated Use `WidgetProvider` instead. This component will be removed in future versions.
|
|
97
|
+
*/
|
|
73
98
|
WidgetWallets,
|
|
99
|
+
WidgetProvider,
|
|
100
|
+
useWidget,
|
|
74
101
|
useWallets,
|
|
75
102
|
useWidgetEvents,
|
|
103
|
+
customizedThemeTokens,
|
|
76
104
|
MainEvents,
|
|
77
105
|
RouteEventType,
|
|
78
106
|
StepEventType,
|
|
79
107
|
StepExecutionEventStatus,
|
|
80
108
|
StepExecutionBlockedEventStatus,
|
|
81
109
|
};
|
|
110
|
+
|
|
111
|
+
// Internal type exports for Rango
|
|
112
|
+
export type {
|
|
113
|
+
WalletState,
|
|
114
|
+
WalletInfo,
|
|
115
|
+
PendingSwap,
|
|
116
|
+
PendingSwapWithQueueID,
|
|
117
|
+
PendingSwapStep,
|
|
118
|
+
RouteExecutionEvents,
|
|
119
|
+
EventSeverity,
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
// Internal function and enum exports for Rango
|
|
123
|
+
export {
|
|
124
|
+
readAccountAddress,
|
|
125
|
+
Networks,
|
|
126
|
+
WalletEvents,
|
|
127
|
+
WalletTypes,
|
|
128
|
+
PendingSwapNetworkStatus,
|
|
129
|
+
};
|
|
@@ -3,7 +3,6 @@ import type {
|
|
|
3
3
|
ConfirmSwap,
|
|
4
4
|
ConfirmSwapFetchResult,
|
|
5
5
|
} from '../hooks/useConfirmSwap/useConfirmSwap.types';
|
|
6
|
-
import type { WidgetConfig } from '../types';
|
|
7
6
|
|
|
8
7
|
import { i18n } from '@lingui/core';
|
|
9
8
|
import { useManager } from '@rango-dev/queue-manager-react';
|
|
@@ -19,7 +18,7 @@ import {
|
|
|
19
18
|
Typography,
|
|
20
19
|
WalletIcon,
|
|
21
20
|
} from '@rango-dev/ui';
|
|
22
|
-
import React, { useEffect, useState } from 'react';
|
|
21
|
+
import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
23
22
|
import { flushSync } from 'react-dom';
|
|
24
23
|
import { useNavigate } from 'react-router-dom';
|
|
25
24
|
|
|
@@ -31,6 +30,7 @@ import { navigationRoutes } from '../constants/navigationRoutes';
|
|
|
31
30
|
import { getQuoteUpdateWarningMessage } from '../constants/warnings';
|
|
32
31
|
import { QuoteInfo } from '../containers/QuoteInfo';
|
|
33
32
|
import { useConfirmSwap } from '../hooks/useConfirmSwap';
|
|
33
|
+
import { useAppStore } from '../store/AppStore';
|
|
34
34
|
import { useQuoteStore } from '../store/quote';
|
|
35
35
|
import { useUiStore } from '../store/ui';
|
|
36
36
|
import { useWalletsStore } from '../store/wallets';
|
|
@@ -44,7 +44,6 @@ const Container = styled('div', {
|
|
|
44
44
|
display: 'flex',
|
|
45
45
|
justifyContent: 'space-between',
|
|
46
46
|
alignItems: 'center',
|
|
47
|
-
paddingBottom: '$10',
|
|
48
47
|
},
|
|
49
48
|
'& .icon': {
|
|
50
49
|
width: '$24',
|
|
@@ -53,6 +52,9 @@ const Container = styled('div', {
|
|
|
53
52
|
justifyContent: 'center',
|
|
54
53
|
alignItems: 'center',
|
|
55
54
|
},
|
|
55
|
+
'& .quote-update__alert': {
|
|
56
|
+
paddingTop: '$10',
|
|
57
|
+
},
|
|
56
58
|
});
|
|
57
59
|
|
|
58
60
|
const Buttons = styled('div', {
|
|
@@ -69,13 +71,8 @@ const Buttons = styled('div', {
|
|
|
69
71
|
},
|
|
70
72
|
});
|
|
71
73
|
|
|
72
|
-
|
|
73
|
-
config?: WidgetConfig;
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
export function ConfirmSwapPage(props: PropTypes) {
|
|
74
|
+
export function ConfirmSwapPage() {
|
|
77
75
|
//TODO: move component's logics to a custom hook
|
|
78
|
-
const { config } = props;
|
|
79
76
|
const {
|
|
80
77
|
quote,
|
|
81
78
|
setInputAmount,
|
|
@@ -92,7 +89,8 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
92
89
|
const showWalletsOnInit = !quoteWalletsConfirmed;
|
|
93
90
|
const [showWallets, setShowWallets] = useState(false);
|
|
94
91
|
const setSelectedSwap = useUiStore.use.setSelectedSwap();
|
|
95
|
-
|
|
92
|
+
const disabledLiquiditySources = useAppStore().disabledLiquiditySources;
|
|
93
|
+
const prevDisabledLiquiditySources = useRef(disabledLiquiditySources);
|
|
96
94
|
const { manager } = useManager();
|
|
97
95
|
const {
|
|
98
96
|
fetch: confirmSwap,
|
|
@@ -126,12 +124,11 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
126
124
|
{ id: confirmSwapResult.swap.requestId }
|
|
127
125
|
);
|
|
128
126
|
setSelectedSwap(confirmSwapResult.swap.requestId);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
);
|
|
127
|
+
|
|
128
|
+
const swap_url = `../${navigationRoutes.swaps}/${confirmSwapResult.swap.requestId}`;
|
|
129
|
+
navigate(swap_url, {
|
|
130
|
+
replace: true,
|
|
131
|
+
});
|
|
135
132
|
setTimeout(() => {
|
|
136
133
|
setInputAmount('');
|
|
137
134
|
}, 0);
|
|
@@ -159,13 +156,23 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
159
156
|
swap: null,
|
|
160
157
|
warnings: null,
|
|
161
158
|
});
|
|
162
|
-
confirmSwap({ selectedWallets })
|
|
159
|
+
confirmSwap({ selectedWallets, customDestination })
|
|
163
160
|
.then((res) => {
|
|
164
161
|
setConfirmSwapResult(res);
|
|
165
162
|
})
|
|
166
163
|
.catch((error) => console.error(error));
|
|
167
164
|
};
|
|
168
165
|
|
|
166
|
+
useEffect(() => {
|
|
167
|
+
const disabledLiquiditySourceReset =
|
|
168
|
+
!!prevDisabledLiquiditySources.current.length &&
|
|
169
|
+
!disabledLiquiditySources.length;
|
|
170
|
+
if (disabledLiquiditySourceReset) {
|
|
171
|
+
void onRefresh();
|
|
172
|
+
}
|
|
173
|
+
prevDisabledLiquiditySources.current = disabledLiquiditySources;
|
|
174
|
+
}, [disabledLiquiditySources.length]);
|
|
175
|
+
|
|
169
176
|
useEffect(() => {
|
|
170
177
|
if (showWalletsOnInit) {
|
|
171
178
|
cancelFetch();
|
|
@@ -245,12 +252,20 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
245
252
|
connectedWallets.length,
|
|
246
253
|
]);
|
|
247
254
|
|
|
255
|
+
useLayoutEffect(() => {
|
|
256
|
+
if (!quote) {
|
|
257
|
+
navigate(`../`);
|
|
258
|
+
}
|
|
259
|
+
}, []);
|
|
260
|
+
|
|
248
261
|
return (
|
|
249
262
|
<Layout
|
|
250
263
|
header={{
|
|
251
264
|
title: i18n.t('Confirm Swap'),
|
|
252
|
-
|
|
253
|
-
|
|
265
|
+
onWallet: () => {
|
|
266
|
+
const wallets_url = `../${navigationRoutes.wallets}`;
|
|
267
|
+
navigate(wallets_url);
|
|
268
|
+
},
|
|
254
269
|
suffix: (
|
|
255
270
|
<Tooltip
|
|
256
271
|
container={getContainer()}
|
|
@@ -259,7 +274,7 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
259
274
|
<HeaderButton
|
|
260
275
|
size="small"
|
|
261
276
|
variant="ghost"
|
|
262
|
-
onClick={() => navigate('
|
|
277
|
+
onClick={() => navigate('../' + navigationRoutes.settings)}>
|
|
263
278
|
<SettingsIcon size={18} color="black" />
|
|
264
279
|
</HeaderButton>
|
|
265
280
|
</Tooltip>
|
|
@@ -296,7 +311,6 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
296
311
|
onCancel={cancelFetch}
|
|
297
312
|
loading={fetchingConfirmationQuote}
|
|
298
313
|
onCheckBalance={onConfirmSwap}
|
|
299
|
-
config={config}
|
|
300
314
|
/>
|
|
301
315
|
)}
|
|
302
316
|
|
|
@@ -322,7 +336,7 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
322
336
|
</>
|
|
323
337
|
)}
|
|
324
338
|
{confirmSwapResult.warnings?.quoteUpdate && (
|
|
325
|
-
|
|
339
|
+
<div className="quote-update__alert">
|
|
326
340
|
<Alert
|
|
327
341
|
variant="alarm"
|
|
328
342
|
type="warning"
|
|
@@ -333,13 +347,13 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
333
347
|
)
|
|
334
348
|
}
|
|
335
349
|
/>
|
|
336
|
-
|
|
337
|
-
</>
|
|
350
|
+
</div>
|
|
338
351
|
)}
|
|
339
352
|
<QuoteInfo
|
|
340
353
|
quote={quote}
|
|
341
354
|
type="swap-preview"
|
|
342
355
|
expanded={true}
|
|
356
|
+
alertPosition="top"
|
|
343
357
|
error={confirmSwapResult.error}
|
|
344
358
|
loading={fetchingConfirmationQuote}
|
|
345
359
|
warning={confirmSwapResult.warnings?.quote ?? null}
|
|
@@ -351,6 +365,7 @@ export function ConfirmSwapPage(props: PropTypes) {
|
|
|
351
365
|
setShowQuoteWarningModal(false);
|
|
352
366
|
await addNewSwap();
|
|
353
367
|
}}
|
|
368
|
+
onChangeSettings={() => navigate('../' + navigationRoutes.settings)}
|
|
354
369
|
/>
|
|
355
370
|
</Container>
|
|
356
371
|
</Layout>
|