@lifi/widget 4.5.0 → 4.6.0
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/esm/AppDrawer.js +2 -1
- package/dist/esm/AppDrawer.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInput.js +13 -7
- package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.js +2 -13
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
- package/dist/esm/components/AmountInputCard/PercentageChips.js +2 -13
- package/dist/esm/components/AmountInputCard/PercentageChips.js.map +1 -1
- package/dist/esm/components/AmountInputCard/PercentageChips.style.js +1 -1
- package/dist/esm/components/AmountInputCard/PercentageChips.style.js.map +1 -1
- package/dist/esm/components/AmountInputCard/SendAmountCard.js +13 -6
- package/dist/esm/components/AmountInputCard/SendAmountCard.js.map +1 -1
- package/dist/esm/components/Chains/AllChainsAvatar.js +7 -1
- package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +2 -1
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Expansion/Expansion.js +4 -3
- package/dist/esm/components/Expansion/Expansion.js.map +1 -1
- package/dist/esm/components/Header/SettingsButton.js +2 -1
- package/dist/esm/components/Header/SettingsButton.js.map +1 -1
- package/dist/esm/components/IconCircle/IconCircle.js +2 -1
- package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
- package/dist/esm/components/Messages/UnsupportedToAddressMessage.js +27 -0
- package/dist/esm/components/Messages/UnsupportedToAddressMessage.js.map +1 -0
- package/dist/esm/components/Messages/WarningMessages.d.ts.map +1 -1
- package/dist/esm/components/Messages/WarningMessages.js +2 -0
- package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
- package/dist/esm/components/Messages/useMessageQueue.js +6 -1
- package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteDetails.js +2 -1
- package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
- package/dist/esm/components/Routes/LimitOrderRoutes.js +2 -2
- package/dist/esm/components/Routes/LimitOrderRoutes.js.map +1 -1
- package/dist/esm/components/Routes/RoutesContent.js +2 -2
- package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js +2 -2
- package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
- package/dist/esm/components/Skeleton/WidgetSkeleton.js +2 -1
- package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
- package/dist/esm/components/Step/StepActions.js +18 -16
- package/dist/esm/components/Step/StepActions.js.map +1 -1
- package/dist/esm/components/StepActions/StepActionRow.js +2 -1
- package/dist/esm/components/StepActions/StepActionRow.js.map +1 -1
- package/dist/esm/components/Switch.js +1 -1
- package/dist/esm/components/Switch.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.style.js +4 -2
- package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
- package/dist/esm/components/TokenList/TokenListItem.js +46 -8
- package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
- package/dist/esm/components/TokenList/VirtualizedTokenList.js +22 -9
- package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
- package/dist/esm/components/TokenRate/TokenRate.js +2 -1
- package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js +22 -21
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/config/version.js.map +1 -1
- package/dist/esm/hooks/timer/time.js +2 -2
- package/dist/esm/hooks/timer/time.js.map +1 -1
- package/dist/esm/hooks/useAvailableChains.d.ts.map +1 -1
- package/dist/esm/hooks/useAvailableChains.js +2 -1
- package/dist/esm/hooks/useAvailableChains.js.map +1 -1
- package/dist/esm/hooks/useExplorer.d.ts.map +1 -1
- package/dist/esm/hooks/useExplorer.js +4 -0
- package/dist/esm/hooks/useExplorer.js.map +1 -1
- package/dist/esm/hooks/useFlaggedTokenGuard.js +28 -0
- package/dist/esm/hooks/useFlaggedTokenGuard.js.map +1 -0
- package/dist/esm/hooks/useGasSufficiency.js +3 -1
- package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
- package/dist/esm/hooks/useMaxSendAmount.js +15 -0
- package/dist/esm/hooks/useMaxSendAmount.js.map +1 -0
- package/dist/esm/hooks/usePacedRouteExecution.js +3 -2
- package/dist/esm/hooks/usePacedRouteExecution.js.map +1 -1
- package/dist/esm/hooks/useRouteExecutionMessage.js +3 -2
- package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
- package/dist/esm/hooks/useRoutes.d.ts.map +1 -1
- package/dist/esm/hooks/useRoutes.js +3 -1
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useToAddressRequirements.d.ts +2 -0
- package/dist/esm/hooks/useToAddressRequirements.d.ts.map +1 -1
- package/dist/esm/hooks/useToAddressRequirements.js +7 -1
- package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
- package/dist/esm/hooks/useTokenBalances.d.ts.map +1 -1
- package/dist/esm/hooks/useTokenBalances.js +7 -2
- package/dist/esm/hooks/useTokenBalances.js.map +1 -1
- package/dist/esm/hooks/useTokenBalancesQueries.js +29 -28
- package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
- package/dist/esm/hooks/useTokenSearch.js +3 -5
- package/dist/esm/hooks/useTokenSearch.js.map +1 -1
- package/dist/esm/hooks/useTokens.js +14 -10
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/hooks/useWideVariant.js +2 -1
- package/dist/esm/hooks/useWideVariant.js.map +1 -1
- package/dist/esm/i18n/bn.json +3 -1
- package/dist/esm/i18n/de.json +3 -1
- package/dist/esm/i18n/en.json +12 -3
- package/dist/esm/i18n/es.json +3 -1
- package/dist/esm/i18n/fr.json +3 -1
- package/dist/esm/i18n/hi.json +3 -1
- package/dist/esm/i18n/id.json +3 -1
- package/dist/esm/i18n/it.json +3 -1
- package/dist/esm/i18n/ja.json +3 -1
- package/dist/esm/i18n/ko.json +3 -1
- package/dist/esm/i18n/pl.json +3 -1
- package/dist/esm/i18n/pt.json +3 -1
- package/dist/esm/i18n/th.json +3 -1
- package/dist/esm/i18n/tr.json +3 -1
- package/dist/esm/i18n/uk.json +3 -1
- package/dist/esm/i18n/vi.json +3 -1
- package/dist/esm/i18n/zh.json +3 -1
- package/dist/esm/pages/MainPage/MainPage.js +2 -1
- package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
- package/dist/esm/pages/MainPage/ReviewButton.js +2 -2
- package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
- package/dist/esm/pages/RoutesPage/RoutesPage.js +2 -2
- package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
- package/dist/esm/pages/SelectChainPage/SelectChainPage.js +13 -12
- package/dist/esm/pages/SelectChainPage/SelectChainPage.js.map +1 -1
- package/dist/esm/pages/SelectEnabledToolsPage.js +8 -5
- package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js +2 -1
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js +2 -1
- package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js +2 -1
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js +2 -1
- package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StartTransactionButton.js +4 -3
- package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TokenVerificationBottomSheet.js +64 -0
- package/dist/esm/pages/TransactionPage/TokenVerificationBottomSheet.js.map +1 -0
- package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +19 -16
- package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionFailedButtons.js +3 -1
- package/dist/esm/pages/TransactionPage/TransactionFailedButtons.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionReview.js +24 -2
- package/dist/esm/pages/TransactionPage/TransactionReview.js.map +1 -1
- package/dist/esm/providers/I18nProvider/I18nProvider.js +37 -36
- package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
- package/dist/esm/providers/ThemeProvider/ThemeProvider.js +2 -1
- package/dist/esm/providers/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.js +10 -9
- package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js +7 -3
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js +4 -3
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
- package/dist/esm/types/token.d.ts +4 -1
- package/dist/esm/types/token.d.ts.map +1 -1
- package/dist/esm/utils/compactNumberFormatter.js +1 -3
- package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
- package/dist/esm/utils/customReceiver.js +7 -0
- package/dist/esm/utils/customReceiver.js.map +1 -0
- package/dist/esm/utils/gas.js +24 -0
- package/dist/esm/utils/gas.js.map +1 -0
- package/dist/esm/utils/getErrorMessage.js +0 -1
- package/dist/esm/utils/getErrorMessage.js.map +1 -1
- package/dist/esm/utils/limitOrder.js +1 -1
- package/dist/esm/utils/limitOrder.js.map +1 -1
- package/dist/esm/utils/token.js +21 -4
- package/dist/esm/utils/token.js.map +1 -1
- package/dist/esm/utils/tokenList.js +38 -21
- package/dist/esm/utils/tokenList.js.map +1 -1
- package/package.json +15 -15
- package/src/components/AmountInput/AmountInputEndAdornment.tsx +2 -21
- package/src/components/AmountInputCard/PercentageChips.tsx +2 -18
- package/src/components/Chains/AllChainsAvatar.tsx +7 -1
- package/src/components/Messages/UnsupportedToAddressMessage.tsx +24 -0
- package/src/components/Messages/WarningMessages.tsx +3 -0
- package/src/components/Messages/useMessageQueue.ts +9 -0
- package/src/components/Routes/LimitOrderRoutes.tsx +5 -2
- package/src/components/Routes/RoutesContent.tsx +5 -2
- package/src/components/SendToWallet/SendToWalletExpandButton.tsx +2 -1
- package/src/components/TokenList/TokenListItem.tsx +68 -9
- package/src/components/TokenList/VirtualizedTokenList.tsx +33 -9
- package/src/components/TokenList/types.ts +4 -0
- package/src/config/version.ts +1 -1
- package/src/hooks/useAvailableChains.ts +1 -0
- package/src/hooks/useExplorer.ts +2 -0
- package/src/hooks/useFlaggedTokenGuard.ts +33 -0
- package/src/hooks/useGasSufficiency.ts +9 -1
- package/src/hooks/useMaxSendAmount.ts +21 -0
- package/src/hooks/useRoutes.ts +7 -0
- package/src/hooks/useToAddressRequirements.ts +17 -1
- package/src/hooks/useTokenBalances.ts +18 -2
- package/src/hooks/useTokenSearch.ts +1 -5
- package/src/hooks/useTokens.ts +28 -13
- package/src/pages/MainPage/ReviewButton.tsx +6 -2
- package/src/pages/RoutesPage/RoutesPage.tsx +5 -2
- package/src/pages/TransactionPage/TokenVerificationBottomSheet.tsx +93 -0
- package/src/pages/TransactionPage/TransactionReview.tsx +28 -1
- package/src/providers/WalletProvider/useExternalWalletProvider.ts +9 -1
- package/src/types/token.ts +6 -3
- package/src/utils/customReceiver.ts +7 -0
- package/src/utils/gas.ts +41 -0
- package/src/utils/token.ts +53 -9
- package/src/utils/tokenList.ts +28 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenSearch.js","names":[],"sources":["../../../src/hooks/useTokenSearch.ts"],"sourcesContent":["import {\n type BaseToken,\n type ChainId,\n getToken,\n type TokenExtended,\n} from '@lifi/sdk'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useSDKClient } from '../providers/SDKClientProvider.js'\nimport { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormType } from '../stores/form/types.js'\nimport type { TokensByChain } from '../types/token.js'\nimport { getConfigItemSets, isFormItemAllowed } from '../utils/item.js'\nimport { getQueryKey } from '../utils/queries.js'\n\nexport const useTokenSearch = (\n chainId?: number,\n tokenQuery?: string,\n enabled?: boolean,\n formType?: FormType\n): {\n token: TokenExtended | undefined\n isLoading: boolean\n} => {\n const queryClient = useQueryClient()\n const { tokens: configTokens, keyPrefix } = useWidgetConfig()\n const sdkClient = useSDKClient()\n\n const { data, isLoading } = useQuery({\n queryKey: [getQueryKey('token-search', keyPrefix), chainId, tokenQuery],\n queryFn: async ({ queryKey: [, chainId, tokenQuery], signal }) => {\n const token = await getToken(\n sdkClient,\n chainId as ChainId,\n tokenQuery as string,\n {\n signal,\n }\n )\n\n if (token) {\n // Filter config tokens by chain before checking if token is allowed\n const filteredConfigTokens = getConfigItemSets(\n configTokens,\n (tokens: BaseToken[]) =>\n new Set(\n tokens\n .filter((t) => t.chainId === token.chainId)\n .map((t) => t.address.toLowerCase())\n ),\n formType\n )\n\n // Return undefined if the token is denied\n if (\n !isFormItemAllowed(token, filteredConfigTokens, formType, (t) =>\n t.address.toLowerCase()\n )\n ) {\n return null\n }\n\n // Add token to main tokens cache\n queryClient.setQueriesData<TokensByChain>(\n { queryKey: [getQueryKey('tokens', keyPrefix)] },\n (data) => {\n if (!data) {\n return data\n }\n const chainTokens = data[chainId as number]\n if (\n chainTokens?.some(\n (t) => t.address.toLowerCase() === token.address.toLowerCase()\n )\n ) {\n return data\n }\n
|
|
1
|
+
{"version":3,"file":"useTokenSearch.js","names":[],"sources":["../../../src/hooks/useTokenSearch.ts"],"sourcesContent":["import {\n type BaseToken,\n type ChainId,\n getToken,\n type TokenExtended,\n} from '@lifi/sdk'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useSDKClient } from '../providers/SDKClientProvider.js'\nimport { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormType } from '../stores/form/types.js'\nimport type { TokensByChain } from '../types/token.js'\nimport { getConfigItemSets, isFormItemAllowed } from '../utils/item.js'\nimport { getQueryKey } from '../utils/queries.js'\n\nexport const useTokenSearch = (\n chainId?: number,\n tokenQuery?: string,\n enabled?: boolean,\n formType?: FormType\n): {\n token: TokenExtended | undefined\n isLoading: boolean\n} => {\n const queryClient = useQueryClient()\n const { tokens: configTokens, keyPrefix } = useWidgetConfig()\n const sdkClient = useSDKClient()\n\n const { data, isLoading } = useQuery({\n queryKey: [getQueryKey('token-search', keyPrefix), chainId, tokenQuery],\n queryFn: async ({ queryKey: [, chainId, tokenQuery], signal }) => {\n const token = await getToken(\n sdkClient,\n chainId as ChainId,\n tokenQuery as string,\n {\n signal,\n }\n )\n\n if (token) {\n // Filter config tokens by chain before checking if token is allowed\n const filteredConfigTokens = getConfigItemSets(\n configTokens,\n (tokens: BaseToken[]) =>\n new Set(\n tokens\n .filter((t) => t.chainId === token.chainId)\n .map((t) => t.address.toLowerCase())\n ),\n formType\n )\n\n // Return undefined if the token is denied\n if (\n !isFormItemAllowed(token, filteredConfigTokens, formType, (t) =>\n t.address.toLowerCase()\n )\n ) {\n return null\n }\n\n // Add token to main tokens cache\n queryClient.setQueriesData<TokensByChain>(\n { queryKey: [getQueryKey('tokens', keyPrefix)] },\n (data) => {\n if (!data) {\n return data\n }\n const chainTokens = data[chainId as number]\n if (\n chainTokens?.some(\n (t) => t.address.toLowerCase() === token.address.toLowerCase()\n )\n ) {\n return data\n }\n return {\n ...data,\n [chainId as number]: [...(chainTokens ?? []), token],\n }\n }\n )\n }\n return token as TokenExtended\n },\n\n enabled: Boolean(chainId && tokenQuery && enabled),\n retry: false,\n })\n return {\n token: data || undefined,\n isLoading,\n }\n}\n"],"mappings":";;;;;;;AAcA,MAAa,kBACX,SACA,YACA,SACA,aAIG;CACH,MAAM,cAAc,eAAe;CACnC,MAAM,EAAE,QAAQ,cAAc,cAAc,gBAAgB;CAC5D,MAAM,YAAY,aAAa;CAE/B,MAAM,EAAE,MAAM,cAAc,SAAS;EACnC,UAAU;GAAC,YAAY,gBAAgB,SAAS;GAAG;GAAS;EAAU;EACtE,SAAS,OAAO,EAAE,UAAU,GAAG,SAAS,aAAa,aAAa;GAChE,MAAM,QAAQ,MAAM,SAClB,WACA,SACA,YACA,EACE,OACF,CACF;GAEA,IAAI,OAAO;IAET,MAAM,uBAAuB,kBAC3B,eACC,WACC,IAAI,IACF,OACG,QAAQ,MAAM,EAAE,YAAY,MAAM,OAAO,CAAC,CAC1C,KAAK,MAAM,EAAE,QAAQ,YAAY,CAAC,CACvC,GACF,QACF;IAGA,IACE,CAAC,kBAAkB,OAAO,sBAAsB,WAAW,MACzD,EAAE,QAAQ,YAAY,CACxB,GAEA,OAAO;IAIT,YAAY,eACV,EAAE,UAAU,CAAC,YAAY,UAAU,SAAS,CAAC,EAAE,IAC9C,SAAS;KACR,IAAI,CAAC,MACH,OAAO;KAET,MAAM,cAAc,KAAK;KACzB,IACE,aAAa,MACV,MAAM,EAAE,QAAQ,YAAY,MAAM,MAAM,QAAQ,YAAY,CAC/D,GAEA,OAAO;KAET,OAAO;MACL,GAAG;OACF,UAAoB,CAAC,GAAI,eAAe,CAAC,GAAI,KAAK;KACrD;IACF,CACF;GACF;GACA,OAAO;EACT;EAEA,SAAS,QAAQ,WAAW,cAAc,OAAO;EACjD,OAAO;CACT,CAAC;CACD,OAAO;EACL,OAAO,QAAQ,KAAA;EACf;CACF;AACF"}
|
|
@@ -2,7 +2,8 @@ import { isItemAllowed } from "../utils/item.js";
|
|
|
2
2
|
import { useWidgetConfig } from "../providers/WidgetProvider/WidgetProvider.js";
|
|
3
3
|
import { useSDKClient } from "../providers/SDKClientProvider.js";
|
|
4
4
|
import { getQueryKey } from "../utils/queries.js";
|
|
5
|
-
import {
|
|
5
|
+
import { useAvailableChains } from "./useAvailableChains.js";
|
|
6
|
+
import { filterAllowedTokens, getNativeTokenAddresses, mergeVerifiedWithSearchTokens } from "../utils/token.js";
|
|
6
7
|
import { defaultChainIdsByType } from "../utils/chainType.js";
|
|
7
8
|
import { ChainType, getToken, getTokens } from "@lifi/sdk";
|
|
8
9
|
import { useMemo } from "react";
|
|
@@ -22,7 +23,8 @@ const useTokens = (formType, search, chainId) => {
|
|
|
22
23
|
ChainType.SVM,
|
|
23
24
|
ChainType.UTXO,
|
|
24
25
|
ChainType.MVM,
|
|
25
|
-
ChainType.TVM
|
|
26
|
+
ChainType.TVM,
|
|
27
|
+
ChainType.STL
|
|
26
28
|
].filter((chainType) => isItemAllowed(chainType, chainsConfig?.types));
|
|
27
29
|
const tokensResponse = await getTokens(sdkClient, {
|
|
28
30
|
chainTypes,
|
|
@@ -33,7 +35,7 @@ const useTokens = (formType, search, chainId) => {
|
|
|
33
35
|
}, { signal });
|
|
34
36
|
return Object.fromEntries(Object.entries(tokensResponse.tokens).map(([chainId, tokens]) => [chainId, tokens.map((token) => ({
|
|
35
37
|
...token,
|
|
36
|
-
|
|
38
|
+
listed: true
|
|
37
39
|
}))]));
|
|
38
40
|
},
|
|
39
41
|
refetchInterval,
|
|
@@ -52,7 +54,8 @@ const useTokens = (formType, search, chainId) => {
|
|
|
52
54
|
ChainType.SVM,
|
|
53
55
|
ChainType.UTXO,
|
|
54
56
|
ChainType.MVM,
|
|
55
|
-
ChainType.TVM
|
|
57
|
+
ChainType.TVM,
|
|
58
|
+
ChainType.STL
|
|
56
59
|
].filter((chainType) => isItemAllowed(chainType, chainsConfig?.types));
|
|
57
60
|
const tokensResponse = await getTokens(sdkClient, {
|
|
58
61
|
chainTypes,
|
|
@@ -73,24 +76,25 @@ const useTokens = (formType, search, chainId) => {
|
|
|
73
76
|
if (token) tokensResponse.tokens[_chainId] = [token];
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
|
-
return
|
|
77
|
-
...token,
|
|
78
|
-
verified: false
|
|
79
|
-
}))]));
|
|
79
|
+
return tokensResponse.tokens;
|
|
80
80
|
},
|
|
81
81
|
enabled: !!search,
|
|
82
82
|
refetchInterval,
|
|
83
83
|
staleTime: refetchInterval
|
|
84
84
|
});
|
|
85
|
+
const { chains } = useAvailableChains();
|
|
86
|
+
const nativeTokenAddresses = useMemo(() => getNativeTokenAddresses(chains), [chains]);
|
|
85
87
|
return {
|
|
86
88
|
allTokens: useMemo(() => {
|
|
87
|
-
|
|
89
|
+
const merged = mergeVerifiedWithSearchTokens(verifiedTokens, searchTokens);
|
|
90
|
+
return filterAllowedTokens(merged, configTokens, chainsConfig, formType, nativeTokenAddresses);
|
|
88
91
|
}, [
|
|
89
92
|
verifiedTokens,
|
|
90
93
|
searchTokens,
|
|
91
94
|
configTokens,
|
|
92
95
|
chainsConfig,
|
|
93
|
-
formType
|
|
96
|
+
formType,
|
|
97
|
+
nativeTokenAddresses
|
|
94
98
|
]),
|
|
95
99
|
isLoading,
|
|
96
100
|
isSearchLoading
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokens.js","names":[],"sources":["../../../src/hooks/useTokens.ts"],"sourcesContent":["import {\n ChainType,\n getToken,\n getTokens,\n type TokenExtended,\n type TokensExtendedResponse,\n} from '@lifi/sdk'\nimport { useChainTypeFromAddress } from '@lifi/widget-provider'\nimport { useQuery } from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport { useSDKClient } from '../providers/SDKClientProvider.js'\nimport { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormType } from '../stores/form/types.js'\nimport type { TokensByChain } from '../types/token.js'\nimport { defaultChainIdsByType } from '../utils/chainType.js'\nimport { isItemAllowed } from '../utils/item.js'\nimport { getQueryKey } from '../utils/queries.js'\nimport {\n filterAllowedTokens,\n mergeVerifiedWithSearchTokens,\n} from '../utils/token.js'\n\nconst refetchInterval = 300_000\n\nexport const useTokens = (\n formType?: FormType,\n search?: string,\n chainId?: number\n): {\n allTokens: Record<number, TokenExtended[]> | undefined\n isLoading: boolean\n isSearchLoading: boolean\n} => {\n const {\n tokens: configTokens,\n chains: chainsConfig,\n keyPrefix,\n } = useWidgetConfig()\n const sdkClient = useSDKClient()\n const { getChainTypeFromAddress } = useChainTypeFromAddress()\n\n // Main tokens cache - verified tokens from API\n const { data: verifiedTokens, isLoading } = useQuery({\n queryKey: [getQueryKey('tokens', keyPrefix)],\n queryFn: async ({ signal }) => {\n const chainTypes = [\n ChainType.EVM,\n ChainType.SVM,\n ChainType.UTXO,\n ChainType.MVM,\n ChainType.TVM,\n ].filter((chainType) => isItemAllowed(chainType, chainsConfig?.types))\n\n const tokensResponse: TokensExtendedResponse = await getTokens(\n sdkClient,\n {\n chainTypes,\n orderBy: 'volumeUSD24H',\n extended: true,\n limit: 1000,\n minPriceUSD: 0.000001,\n },\n { signal }\n )\n\n //
|
|
1
|
+
{"version":3,"file":"useTokens.js","names":[],"sources":["../../../src/hooks/useTokens.ts"],"sourcesContent":["import {\n ChainType,\n getToken,\n getTokens,\n type TokenExtended,\n type TokensExtendedResponse,\n} from '@lifi/sdk'\nimport { useChainTypeFromAddress } from '@lifi/widget-provider'\nimport { useQuery } from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport { useSDKClient } from '../providers/SDKClientProvider.js'\nimport { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormType } from '../stores/form/types.js'\nimport type { TokensByChain } from '../types/token.js'\nimport { defaultChainIdsByType } from '../utils/chainType.js'\nimport { isItemAllowed } from '../utils/item.js'\nimport { getQueryKey } from '../utils/queries.js'\nimport {\n filterAllowedTokens,\n getNativeTokenAddresses,\n mergeVerifiedWithSearchTokens,\n} from '../utils/token.js'\nimport { useAvailableChains } from './useAvailableChains.js'\n\nconst refetchInterval = 300_000\n\nexport const useTokens = (\n formType?: FormType,\n search?: string,\n chainId?: number\n): {\n allTokens: Record<number, TokenExtended[]> | undefined\n isLoading: boolean\n isSearchLoading: boolean\n} => {\n const {\n tokens: configTokens,\n chains: chainsConfig,\n keyPrefix,\n } = useWidgetConfig()\n const sdkClient = useSDKClient()\n const { getChainTypeFromAddress } = useChainTypeFromAddress()\n\n // Main tokens cache - verified tokens from API\n const { data: verifiedTokens, isLoading } = useQuery({\n queryKey: [getQueryKey('tokens', keyPrefix)],\n queryFn: async ({ signal }) => {\n const chainTypes = [\n ChainType.EVM,\n ChainType.SVM,\n ChainType.UTXO,\n ChainType.MVM,\n ChainType.TVM,\n ChainType.STL,\n ].filter((chainType) => isItemAllowed(chainType, chainsConfig?.types))\n\n const tokensResponse: TokensExtendedResponse = await getTokens(\n sdkClient,\n {\n chainTypes,\n orderBy: 'volumeUSD24H',\n extended: true,\n limit: 1000,\n minPriceUSD: 0.000001,\n },\n { signal }\n )\n\n // `listed` tells a main-list token from a searched one\n const tokens: TokensByChain = Object.fromEntries(\n Object.entries(tokensResponse.tokens).map(([chainId, tokens]) => [\n chainId,\n tokens.map((token) => ({ ...token, listed: true })),\n ])\n )\n\n return tokens\n },\n refetchInterval,\n staleTime: refetchInterval,\n })\n\n // Search tokens cache - unverified tokens from search\n const { data: searchTokens, isLoading: isSearchLoading } = useQuery({\n queryKey: [getQueryKey('tokens-search', keyPrefix), search, chainId],\n queryFn: async ({ queryKey, signal }) => {\n const [, searchQuery, searchChainId] = queryKey as [\n string,\n string,\n number,\n ]\n const chainTypes = [\n ChainType.EVM,\n ChainType.SVM,\n ChainType.UTXO,\n ChainType.MVM,\n ChainType.TVM,\n ChainType.STL,\n ].filter((chainType) => isItemAllowed(chainType, chainsConfig?.types))\n\n const tokensResponse: TokensExtendedResponse = await getTokens(\n sdkClient,\n {\n chainTypes,\n orderBy: 'volumeUSD24H',\n extended: true,\n search: searchQuery,\n limit: 1000,\n minPriceUSD: 0.000001,\n },\n { signal }\n )\n\n // If the chainId is not provided, try to get it from the search query\n let _chainId = searchChainId\n if (!_chainId) {\n const chainType = getChainTypeFromAddress(searchQuery)\n if (chainType && chainType in defaultChainIdsByType) {\n _chainId = defaultChainIdsByType[chainType]\n }\n }\n\n // Fallback: If the main search returned no tokens for the specific chainId,\n // fetch a single token using the /token endpoint\n if (_chainId && searchQuery) {\n const existingTokens = tokensResponse.tokens[_chainId] || []\n if (!existingTokens.length) {\n const token = await getToken(sdkClient, _chainId, searchQuery, {\n signal,\n })\n if (token) {\n tokensResponse.tokens[_chainId] = [token]\n }\n }\n }\n\n return tokensResponse.tokens as TokensByChain\n },\n enabled: !!search,\n refetchInterval,\n staleTime: refetchInterval,\n })\n\n const { chains } = useAvailableChains()\n const nativeTokenAddresses = useMemo(\n () => getNativeTokenAddresses(chains),\n [chains]\n )\n\n // Merge tokens at read time - single place where caches are combined\n const allTokens = useMemo(() => {\n const merged = mergeVerifiedWithSearchTokens(verifiedTokens, searchTokens)\n return filterAllowedTokens(\n merged,\n configTokens,\n chainsConfig,\n formType,\n nativeTokenAddresses\n )\n }, [\n verifiedTokens,\n searchTokens,\n configTokens,\n chainsConfig,\n formType,\n nativeTokenAddresses,\n ])\n\n return {\n allTokens,\n isLoading,\n isSearchLoading,\n }\n}\n"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,kBAAkB;AAExB,MAAa,aACX,UACA,QACA,YAKG;CACH,MAAM,EACJ,QAAQ,cACR,QAAQ,cACR,cACE,gBAAgB;CACpB,MAAM,YAAY,aAAa;CAC/B,MAAM,EAAE,4BAA4B,wBAAwB;CAG5D,MAAM,EAAE,MAAM,gBAAgB,cAAc,SAAS;EACnD,UAAU,CAAC,YAAY,UAAU,SAAS,CAAC;EAC3C,SAAS,OAAO,EAAE,aAAa;GAC7B,MAAM,aAAa;IACjB,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;GACZ,CAAC,CAAC,QAAQ,cAAc,cAAc,WAAW,cAAc,KAAK,CAAC;GAErE,MAAM,iBAAyC,MAAM,UACnD,WACA;IACE;IACA,SAAS;IACT,UAAU;IACV,OAAO;IACP,aAAa;GACf,GACA,EAAE,OAAO,CACX;GAUA,OAP8B,OAAO,YACnC,OAAO,QAAQ,eAAe,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,YAAY,CAC/D,SACA,OAAO,KAAK,WAAW;IAAE,GAAG;IAAO,QAAQ;GAAK,EAAE,CACpD,CAAC,CAGS;EACd;EACA;EACA,WAAW;CACb,CAAC;CAGD,MAAM,EAAE,MAAM,cAAc,WAAW,oBAAoB,SAAS;EAClE,UAAU;GAAC,YAAY,iBAAiB,SAAS;GAAG;GAAQ;EAAO;EACnE,SAAS,OAAO,EAAE,UAAU,aAAa;GACvC,MAAM,GAAG,aAAa,iBAAiB;GAKvC,MAAM,aAAa;IACjB,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;GACZ,CAAC,CAAC,QAAQ,cAAc,cAAc,WAAW,cAAc,KAAK,CAAC;GAErE,MAAM,iBAAyC,MAAM,UACnD,WACA;IACE;IACA,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,aAAa;GACf,GACA,EAAE,OAAO,CACX;GAGA,IAAI,WAAW;GACf,IAAI,CAAC,UAAU;IACb,MAAM,YAAY,wBAAwB,WAAW;IACrD,IAAI,aAAa,aAAa,uBAC5B,WAAW,sBAAsB;GAErC;GAIA,IAAI,YAAY,aAEV;QAAA,EADmB,eAAe,OAAO,aAAa,CAAC,EAAA,CACvC,QAAQ;KAC1B,MAAM,QAAQ,MAAM,SAAS,WAAW,UAAU,aAAa,EAC7D,OACF,CAAC;KACD,IAAI,OACF,eAAe,OAAO,YAAY,CAAC,KAAK;IAE5C;;GAGF,OAAO,eAAe;EACxB;EACA,SAAS,CAAC,CAAC;EACX;EACA,WAAW;CACb,CAAC;CAED,MAAM,EAAE,WAAW,mBAAmB;CACtC,MAAM,uBAAuB,cACrB,wBAAwB,MAAM,GACpC,CAAC,MAAM,CACT;CAqBA,OAAO;EACL,WAnBgB,cAAc;GAC9B,MAAM,SAAS,8BAA8B,gBAAgB,YAAY;GACzE,OAAO,oBACL,QACA,cACA,cACA,UACA,oBACF;EACF,GAAG;GACD;GACA;GACA;GACA;GACA;GACA;EACF,CAGU;EACR;EACA;CACF;AACF"}
|
|
@@ -6,7 +6,8 @@ import { useMediaQuery } from "@mui/material";
|
|
|
6
6
|
const defaultExpandableWidth = 852;
|
|
7
7
|
const useWideVariant = () => {
|
|
8
8
|
const config = useWidgetConfig();
|
|
9
|
-
const
|
|
9
|
+
const activeTab = useNavigationTabsStore((store) => store.activeTab);
|
|
10
|
+
const variant = getTabVariant(config, activeTab);
|
|
10
11
|
const expandableAllowed = useMediaQuery((theme) => theme.breakpoints.up(defaultExpandableWidth));
|
|
11
12
|
return variant === "wide" && expandableAllowed && !config.showSingleRoute;
|
|
12
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWideVariant.js","names":[],"sources":["../../../src/hooks/useWideVariant.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport { useMediaQuery } from '@mui/material'\nimport { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'\nimport { useNavigationTabsStore } from '../stores/navigationTabs/useNavigationTabsStore.js'\nimport { getTabVariant } from '../stores/navigationTabs/utils.js'\n\nconst defaultExpandableWidth = 852\n\nexport const useWideVariant = (): boolean => {\n const config = useWidgetConfig()\n const activeTab = useNavigationTabsStore((store) => store.activeTab)\n // The active tab can pin its own variant (e.g. the limit tab is compact),\n // falling back to the widget config's variant when it doesn't.\n const variant = getTabVariant(config, activeTab)\n const expandableAllowed = useMediaQuery((theme: Theme) =>\n theme.breakpoints.up(defaultExpandableWidth)\n )\n return variant === 'wide' && expandableAllowed && !config.showSingleRoute\n}\n"],"mappings":";;;;;AAMA,MAAM,yBAAyB;AAE/B,MAAa,uBAAgC;CAC3C,MAAM,SAAS,gBAAgB;
|
|
1
|
+
{"version":3,"file":"useWideVariant.js","names":[],"sources":["../../../src/hooks/useWideVariant.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport { useMediaQuery } from '@mui/material'\nimport { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'\nimport { useNavigationTabsStore } from '../stores/navigationTabs/useNavigationTabsStore.js'\nimport { getTabVariant } from '../stores/navigationTabs/utils.js'\n\nconst defaultExpandableWidth = 852\n\nexport const useWideVariant = (): boolean => {\n const config = useWidgetConfig()\n const activeTab = useNavigationTabsStore((store) => store.activeTab)\n // The active tab can pin its own variant (e.g. the limit tab is compact),\n // falling back to the widget config's variant when it doesn't.\n const variant = getTabVariant(config, activeTab)\n const expandableAllowed = useMediaQuery((theme: Theme) =>\n theme.breakpoints.up(defaultExpandableWidth)\n )\n return variant === 'wide' && expandableAllowed && !config.showSingleRoute\n}\n"],"mappings":";;;;;AAMA,MAAM,yBAAyB;AAE/B,MAAa,uBAAgC;CAC3C,MAAM,SAAS,gBAAgB;CAC/B,MAAM,YAAY,wBAAwB,UAAU,MAAM,SAAS;CAGnE,MAAM,UAAU,cAAc,QAAQ,SAAS;CAC/C,MAAM,oBAAoB,eAAe,UACvC,MAAM,YAAY,GAAG,sBAAsB,CAC7C;CACA,OAAO,YAAY,UAAU,qBAAqB,CAAC,OAAO;AAC5D"}
|
package/dist/esm/i18n/bn.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "আপনার {{chainName}} গ্যাস কম। চালিয়ে যাওয়ার মাধ্যমে, আপনি সোওয়াপ সম্পূর্ণ করার জন্য পর্যাপ্ত গ্যাস পাবেন।",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "প্রাপ্ত টোকেনগুলির মান সোওয়াপ করা টোকেন এবং লেনদেনের খরচের তুলনায় উল্লেখযোগ্যভাবে কম।",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "সোওয়াপ সম্পূর্ণ করার জন্য আপনার কাছে পর্যাপ্ত তহবিল নেই।",
|
|
128
130
|
"insufficientGas": "সোওয়াপ সম্পূর্ণ করার জন্য আপনার কাছে পর্যাপ্ত গ্যাস নেই। আপনাকে অন্তত যোগ করতে হবে:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/de.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "Sie haben nicht genug Gas auf {{chainName}}. Wenn Sie fortfahren, erhalten Sie zusätzlich genug Gas um den Swap abzuschließen.",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "Der Wert der erhaltenen Token ist deutlich niedriger als die getauschten Token und die Transaktionskosten.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "Sie haben nicht genug Token, um diesen Swap abzuschließen.",
|
|
128
130
|
"insufficientGas": "Sie haben nicht genug Gas um diesen Swap abzuschließen. Sie müssen mindestens hinzufügen:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/en.json
CHANGED
|
@@ -116,6 +116,7 @@
|
|
|
116
116
|
"info": {
|
|
117
117
|
"message": {
|
|
118
118
|
"accountDeployedMessage": "Your smart account may not have the same address on other chains. Please double-check before proceeding.",
|
|
119
|
+
"unsupportedToAddressMessage": "Stellar transfers always settle to the account that signs them, so a different recipient can't be used for this route.",
|
|
119
120
|
"autoRefuel": "You're low on {{chainName}} gas. By continuing, you'll get enough gas to complete the transaction.",
|
|
120
121
|
"emptyBridgesList": "We couldn't find any bridges that match your search",
|
|
121
122
|
"emptyChainList": "We couldn't find any chains that match your search",
|
|
@@ -147,12 +148,14 @@
|
|
|
147
148
|
},
|
|
148
149
|
"warning": {
|
|
149
150
|
"message": {
|
|
151
|
+
"tokenUnverified": "Unverified token. Always do your own research before proceeding.",
|
|
152
|
+
"tokenUnverifiedByProvider": "{{tokenSymbol}} is not verified by Hypernative. Make sure you trust this token before proceeding.",
|
|
150
153
|
"accountNotDeployedMessage": "Smart contract account doesn't exist on the destination chain. Sending funds to a non-existent smart contract account can result in permanent loss.",
|
|
151
154
|
"lowAddressActivity": "This address has low activity on {{chainName}} network. Please verify you're sending to the correct address and network to prevent potential loss of funds.",
|
|
152
155
|
"clearFailedTransactions": "Failed transactions are only stored locally and can't be recovered once cleared.",
|
|
153
156
|
"fundsLossPrevention": "Always ensure smart contract accounts are properly set up on the destination chain and avoid direct transfers to exchanges to prevent fund loss.",
|
|
154
157
|
"highValueLoss": "The value of the received tokens is significantly lower than the exchanged tokens and transaction cost.",
|
|
155
|
-
"
|
|
158
|
+
"tokenFlagged": "{{tokenSymbol}} has been flagged as malicious by Hypernative. Swapping this token may result in a total loss of funds.",
|
|
156
159
|
"insufficientFunds": "You don't have enough funds to complete the transaction.",
|
|
157
160
|
"insufficientGas": "You don't have enough gas to complete the transaction. You need to add at least:",
|
|
158
161
|
"minFromAmountUSD": "Minimum amount is {{amount, currencyExt(currency: USD)}}. Please enter a higher amount.",
|
|
@@ -162,7 +165,8 @@
|
|
|
162
165
|
"slippageUnderRecommendedLimits": "Low slippage tolerance may cause transaction delays or failures."
|
|
163
166
|
},
|
|
164
167
|
"checkbox": {
|
|
165
|
-
"highValueLoss": "I accept the high value loss"
|
|
168
|
+
"highValueLoss": "I accept the high value loss",
|
|
169
|
+
"tokenFlagged": "I understand the risks and want to proceed anyway"
|
|
166
170
|
},
|
|
167
171
|
"title": {
|
|
168
172
|
"clearFailedTransactions": "Clear all failed transactions?",
|
|
@@ -170,6 +174,7 @@
|
|
|
170
174
|
"insufficientGas": "Insufficient gas",
|
|
171
175
|
"rateChanged": "Rate changed",
|
|
172
176
|
"resetSettings": "Reset settings?",
|
|
177
|
+
"tokenFlagged": "Malicious token detected",
|
|
173
178
|
"lowAddressActivity": "Low Activity Address"
|
|
174
179
|
}
|
|
175
180
|
},
|
|
@@ -238,7 +243,11 @@
|
|
|
238
243
|
"progressToNextUpdate": "Quotes will update in {{value}} seconds. <0/> Click here to update now.",
|
|
239
244
|
"selectAll": "Select all",
|
|
240
245
|
"settingsModified": "Settings (modified)",
|
|
241
|
-
"slippage": "The maximum percentage difference between the expected price, and the actual price at which a transfer is executed. This value can be changed in settings."
|
|
246
|
+
"slippage": "The maximum percentage difference between the expected price, and the actual price at which a transfer is executed. This value can be changed in settings.",
|
|
247
|
+
"tokenNative": "{{tokenSymbol}} is the native token of this network.",
|
|
248
|
+
"tokenNativeOnChain": "{{tokenSymbol}} is the native token of {{chainName}}.",
|
|
249
|
+
"tokenVerified": "{{tokenSymbol}} has been verified.",
|
|
250
|
+
"tokenVerifiedByProvider": "{{tokenSymbol}} has been verified by {{provider}}."
|
|
242
251
|
},
|
|
243
252
|
"main": {
|
|
244
253
|
"allNetworks": "All networks",
|
package/dist/esm/i18n/es.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "Tienes poco gas en {{chainName}}. Al continuar, obtendrás suficiente gas para completar la transacción.",
|
|
91
92
|
"emptyBridgesList": "No pudimos encontrar ningún puente que coincida con tu búsqueda",
|
|
92
93
|
"emptyChainList": "No pudimos encontrar ninguna cadena que coincida con tu búsqueda",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "Esta dirección tiene poca actividad en la red {{chainName}}. Por favor, comprueba que estás enviando a la dirección y a la red correctas para evitar la pérdida potencial de fondos.",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "Asegúrate de que las cuentas de Contratos Inteligentes estén bien configuradas en la cadena de destino y evita transferencias directas a plataformas de intercambio centralizadas para no perder fondos.",
|
|
125
128
|
"highValueLoss": "El valor de los tokens recibidos es significativamente menor que los tokens intercambiados y el costo de la transacción.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "No tiene fondos suficientes para ejecutar el intercambio.",
|
|
128
130
|
"insufficientGas": "Debes agregar al menos:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/fr.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "Vous avez peu de gaz sur {{chainName}}. En continuant, vous aurez assez de gaz pour compléter l'échange.",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "La valeur des jetons reçus est nettement inférieure à celle des jetons échangés et au coût de la transaction.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "Vous n'avez pas assez de fonds pour finaliser l'échange.",
|
|
128
130
|
"insufficientGas": "Vous n'avez pas assez de gaz pour finaliser l'échange. Vous devez avoir au moins:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/hi.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "",
|
|
128
130
|
"insufficientGas": "",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/id.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "Gas anda hampir habis {{chainName}}. Dengan melanjutkan, anda akan mendapatkan cukup gas untuk menyelesaikan penukaran.",
|
|
91
92
|
"emptyBridgesList": "Kami tidak dapat menemukan bridge yang sesuai dengan pencarian Anda",
|
|
92
93
|
"emptyChainList": "Kami tidak dapat menemukan chain yang sesuai dengan pencarian Anda",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "Akun kontrak pintar tidak ada di rantai tujuan. Mengirim dana ke akun kontrak pintar yang tidak ada dapat mengakibatkan kerugian permanen.",
|
|
122
125
|
"lowAddressActivity": "Alamat ini memiliki aktivitas rendah di jaringan {{chainName}}. Harap verifikasi bahwa Anda mengirim ke alamat dan jaringan yang benar untuk mencegah potensi kehilangan dana.",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "Selalu pastikan akun kontrak pintar disiapkan dengan benar di rantai tujuan dan hindari transfer langsung ke bursa untuk mencegah hilangnya dana.",
|
|
125
128
|
"highValueLoss": "Nilai token yang diterima jauh lebih rendah daripada token yang ditukar dan biaya transaksi.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "Anda tidak memiliki cukup dana untuk menyelesaikan penukaran.",
|
|
128
130
|
"insufficientGas": "Anda tidak memiliki cukup gas untuk menyelesaikan penukaran. Anda perlu menambahkan setidaknya:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/it.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "Livello basso di gas su {{chainName}}. Continuando avrai abbastanza gas per completare lo scambio.",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "Il valore dei token ricevuti è significativamente inferiore ai token scambiati più il costo della transazione.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "Non hai abbastanza fondi per completare lo scambio.",
|
|
128
130
|
"insufficientGas": "Non hai abbastanza gas per completare lo scambio. Devi aggiungere almeno:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/ja.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "{{chainName}} のガスが不足していますが、続行することでトランザクションを完了するのに十分なガスが補填されます。",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "受け取るトークンの価値は、交換されたトークンとトランザクションコストよりも大幅に低くなります。",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "トランザクションを完了するのに十分な資金がありません。",
|
|
128
130
|
"insufficientGas": "トランザクションを完了するのに十分なガスがありません。少なくとも以下を追加する必要があります:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/ko.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "현재 {{chainName}} 가스가 부족합니다. 이 기능을 통하여 스왑을 완료할 가스를 보충할 수 있습니다.",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "받은 토큰의 가치가 스왑된 토큰 및 트랜잭션 비용보다 상당히 낮습니다.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "스왑을 진행할 자금이 부족합니다.",
|
|
128
130
|
"insufficientGas": "스왑을 진행할 가스가 부족합니다. 최소 다음과 같은 가스가 필요합니다:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/pl.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "",
|
|
128
130
|
"insufficientGas": "",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/pt.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "Sua conta inteligente pode não ter o mesmo endereço em outras cadeias. Por favor, verifique novamente antes de prosseguir.",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "Você está com pouco gás na rede {{chainName}}. Ao continuar, você obterá gás suficiente para completar a conversão.",
|
|
91
92
|
"emptyBridgesList": "Não conseguimos encontrar nenhuma ponte que corresponda à sua pesquisa",
|
|
92
93
|
"emptyChainList": "Não conseguimos encontrar nenhuma rede que corresponda à sua pesquisa",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "Token não verificado. Faça sempre sua própria pesquisa antes de prosseguir.",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "A conta do contrato inteligente não existe na rede de destino. O envio de fundos para uma conta de contrato inteligente inexistente pode resultar em perda permanente.",
|
|
122
125
|
"lowAddressActivity": "Este endereço tem baixa atividade na rede {{chainName}}. Por favor, verifique se você está enviando para o endereço e rede corretos para evitar a potencial perda de fundos.",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "Sempre certifique-se de que as contas de contrato inteligente estão devidamente configuradas na cadeia de destino e evite transferências diretas para corretoras de criptomoedas para evitar perda de fundos.",
|
|
125
128
|
"highValueLoss": "A quantidade de tokens a serem recebidos é significativamente menor do que os tokens convertidos e os custos da transação.",
|
|
126
|
-
"unverifiedToken": "Token não verificado. Faça sempre sua própria pesquisa antes de prosseguir.",
|
|
127
129
|
"insufficientFunds": "Você não possui fundos suficientes para completar a conversão.",
|
|
128
130
|
"insufficientGas": "Você não tem gás suficiente para completar a conversão. É necessário adicionar pelo menos:",
|
|
129
131
|
"minFromAmountUSD": "Valor mínimo é {{amount, currencyExt(currency: USD)}}. Por favor, insira um valor maior.",
|
package/dist/esm/i18n/th.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "คุณใช้แก็ส {{chainName}} เหลือน้อย เมื่อดำเนินการต่อ คุณจะได้รับแก็สเพียงพอสำหรับการแลกเปลี่ยนให้เสร็จสมบูรณ์",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "มูลค่าของโทเค็นที่ได้รับนั้นต่ำกว่าโทเค็นที่แลกเปลี่ยนและต้นทุนการทำธุรกรรมอย่างมาก.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "คุณมีเงินไม่เพียงพอที่จะดำเนินการแลกเปลี่ยน.",
|
|
128
130
|
"insufficientGas": "คุณมีแก๊สไม่เพียงพอที่จะแลกเปลี่ยนให้เสร็จสมบูรณ์ คุณต้องเพิ่มอย่างน้อย:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/tr.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "{{chainName}} ağında gaz yetersiz. Devam ederek, işlem için gereken miktarda gaz alacaksınız.",
|
|
91
92
|
"emptyBridgesList": "Aradığın köprüyü bulamadık",
|
|
92
93
|
"emptyChainList": "Aradığın zinciri bulamadık",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "Bu adres {{chainName}} ağında düşük etkinliğe sahip. Olası fon kaybını önlemek için lütfen doğru adrese ve ağa gönderim yaptığınızı doğrulayın.",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "Her zaman akıllı sözleşme hesaplarının hedef zincirde düzgün bir şekilde ayarlandığından emin olun ve fon kaybını önlemek için borsalara doğrudan transferlerden kaçının.",
|
|
125
128
|
"highValueLoss": "Elde edilecek varlıkların değeri, takas edilen varlıklardan ve işlem maliyetinden önemli ölçüde düşüktür.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "Takas işlemini gerçekleştirmek için yeterli bakiyeniz bulunmamaktadır.",
|
|
128
130
|
"insufficientGas": "En azından şunları eklemelisiniz:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/uk.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "Можливо, ваш смарт-акаунт не має однакової адреси на інших чейнах. Будь ласка, перевірте, перш ніж продовжити.",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "У вас замало {{chainName}} газу. Продовжуючи, ви отримаєте достатньо газу, щоб завершити обмін.",
|
|
91
92
|
"emptyBridgesList": "Ми не змогли знайти жодного моста, що відповідає вашому запиту",
|
|
92
93
|
"emptyChainList": "Ми не змогли знайти жодного чейна, що відповідає вашому запиту",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "Обліковий запис смартконтракту не розгорнуто в цільовому чейні. Надсилання коштів на нереальний контракт призведе до незворотних втрат.",
|
|
122
125
|
"lowAddressActivity": "Ця адреса має низьку активність у мережі {{chainName}}. Будь ласка, перевірте, що ви надсилаєте на правильну адресу та мережу, щоб запобігти можливому втраті коштів.",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "Завжди переконуйтеся, що облікові записи смартконтрактів правильно налаштовані в мережі призначення, та уникайте прямих переказів на біржі, щоб запобігти втраті коштів.",
|
|
125
128
|
"highValueLoss": "Вартість отриманих токенів значно нижча, ніж обмінені токени та вартість транзакції.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "У вас недостатньо коштів для здійснення свопу.",
|
|
128
130
|
"insufficientGas": "Для завершення свопа у вас недостатньо газу. Вам необхідно додати хоча б:",
|
|
129
131
|
"minFromAmountUSD": "Мінімальна сума {{amount, currencyExt(currency: USD)}}. Будь ласка, введіть більшу суму.",
|
package/dist/esm/i18n/vi.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "Gas trên {{chainName}} chain của bạn đang thấp. Để tiếp tục, bạn nên có thêm gas để hoàn thành việc swap.",
|
|
91
92
|
"emptyBridgesList": "",
|
|
92
93
|
"emptyChainList": "",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "",
|
|
125
128
|
"highValueLoss": "Giá trị của token nhận được đang thấp hơn rất nhiều so với token được swap và chi phí giao dịch.",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "Bạn không có đủ tiền để thực hiện tác vụ này.",
|
|
128
130
|
"insufficientGas": "Bạn không đủ gas để thực hiện swap. Bạn cần thêm ít nhất:",
|
|
129
131
|
"minFromAmountUSD": "",
|
package/dist/esm/i18n/zh.json
CHANGED
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"info": {
|
|
88
88
|
"message": {
|
|
89
89
|
"accountDeployedMessage": "",
|
|
90
|
+
"unsupportedToAddressMessage": "",
|
|
90
91
|
"autoRefuel": "您在 {{chainName}} 链上的燃气费很低。如果启用该选项,您将获得足够的燃气费完成此次兑换。",
|
|
91
92
|
"emptyBridgesList": "我们找不到任何匹配的桥",
|
|
92
93
|
"emptyChainList": "我们找不到任何匹配的链",
|
|
@@ -118,12 +119,13 @@
|
|
|
118
119
|
},
|
|
119
120
|
"warning": {
|
|
120
121
|
"message": {
|
|
122
|
+
"tokenUnverified": "",
|
|
123
|
+
"tokenUnverifiedByProvider": "",
|
|
121
124
|
"accountNotDeployedMessage": "",
|
|
122
125
|
"lowAddressActivity": "此地址在 {{chainName}} 网络上的活跃度较低。请确认您发送到了正确的地址和网络,以防止潜在的资金损失。",
|
|
123
126
|
"clearFailedTransactions": "",
|
|
124
127
|
"fundsLossPrevention": "总是确保在目的地链上适当建立智能合同账户,并避免直接转给交易所,以防止资金损失。",
|
|
125
128
|
"highValueLoss": "收到的代币的价值明显低于要被兑换的代币和交易成本。",
|
|
126
|
-
"unverifiedToken": "",
|
|
127
129
|
"insufficientFunds": "你没有足够的资金来完成这笔交易。",
|
|
128
130
|
"insufficientGas": "您没有足够的燃气费来完成此次交易。您至少需要添加:",
|
|
129
131
|
"minFromAmountUSD": "",
|
|
@@ -29,7 +29,8 @@ const MainPage = () => {
|
|
|
29
29
|
const showAmountEntry = !custom || modeOptions?.custom?.type === "deposit";
|
|
30
30
|
const showGasRefuelMessage = !hiddenUI?.gasRefuelMessage;
|
|
31
31
|
const splitTitle = modeOptions?.split === "bridge" ? t("header.bridge") : modeOptions?.split === "swap" ? t("header.swap") : void 0;
|
|
32
|
-
|
|
32
|
+
const title = mode === "limit" ? t("header.limit") : mode === "custom" ? t(`header.${modeOptions?.custom?.type ?? "checkout"}`) : mode === "refuel" ? t("header.gas") : mode === "split" && splitTitle ? splitTitle : t("header.exchange");
|
|
33
|
+
useHeader(title);
|
|
33
34
|
if (mode === "limit") return /* @__PURE__ */ jsx(LimitPageContent, {});
|
|
34
35
|
return /* @__PURE__ */ jsxs(PageContainer, {
|
|
35
36
|
topGutters: true,
|