@lifi/widget 4.3.1 → 4.5.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/App.d.ts +0 -1
- package/dist/esm/App.d.ts.map +1 -1
- package/dist/esm/App.js.map +1 -1
- package/dist/esm/AppDrawer.d.ts +1 -1
- package/dist/esm/AppDrawer.d.ts.map +1 -1
- package/dist/esm/AppDrawer.js.map +1 -1
- package/dist/esm/AppLayout.js.map +1 -1
- package/dist/esm/AppProvider.js.map +1 -1
- package/dist/esm/components/ActionRow/ActionRow.d.ts +13 -0
- package/dist/esm/components/ActionRow/ActionRow.d.ts.map +1 -0
- package/dist/esm/components/ActionRow/ActionRow.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInput.style.d.ts +9 -0
- package/dist/esm/components/AmountInput/AmountInput.style.d.ts.map +1 -0
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.d.ts +7 -0
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.d.ts.map +1 -0
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
- package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
- package/dist/esm/components/AmountInput/PriceFormHelperText.style.d.ts +7 -0
- package/dist/esm/components/AmountInput/PriceFormHelperText.style.d.ts.map +1 -0
- package/dist/esm/components/AmountInputCard/AmountInputCardPair.js.map +1 -1
- package/dist/esm/components/AmountInputCard/BalanceDisplay.js.map +1 -1
- package/dist/esm/components/AmountInputCard/FiatValueToggle.js.map +1 -1
- package/dist/esm/components/AmountInputCard/PercentageChips.js.map +1 -1
- package/dist/esm/components/AmountInputCard/ReceiveAmountCard.js.map +1 -1
- package/dist/esm/components/AmountInputCard/SendAmountCard.js.map +1 -1
- package/dist/esm/components/AppContainer.js.map +1 -1
- package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.d.ts +12 -0
- package/dist/esm/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Avatar/ChainBadgeContent.js.map +1 -1
- package/dist/esm/components/Avatar/TokenAvatar.d.ts +14 -0
- package/dist/esm/components/Avatar/TokenAvatar.d.ts.map +1 -0
- package/dist/esm/components/Avatar/TokenAvatar.js.map +1 -1
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.d.ts +6 -0
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.d.ts.map +1 -0
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
- package/dist/esm/components/BaseTransactionButton/types.d.ts +14 -0
- package/dist/esm/components/BaseTransactionButton/types.d.ts.map +1 -0
- package/dist/esm/components/BottomSheet/types.d.ts +11 -0
- package/dist/esm/components/BottomSheet/types.d.ts.map +1 -0
- package/dist/esm/components/ButtonTertiary.d.ts +7 -0
- package/dist/esm/components/ButtonTertiary.d.ts.map +1 -0
- package/dist/esm/components/Card/Card.d.ts +12 -0
- package/dist/esm/components/Card/Card.d.ts.map +1 -0
- package/dist/esm/components/Card/CardButton.js.map +1 -1
- package/dist/esm/components/Card/CardIconButton.d.ts +7 -0
- package/dist/esm/components/Card/CardIconButton.d.ts.map +1 -0
- package/dist/esm/components/Card/CardTitle.d.ts +9 -0
- package/dist/esm/components/Card/CardTitle.d.ts.map +1 -0
- package/dist/esm/components/Card/InputCard.d.ts +7 -0
- package/dist/esm/components/Card/InputCard.d.ts.map +1 -0
- package/dist/esm/components/ChainSelect/ChainSelect.d.ts +7 -0
- package/dist/esm/components/ChainSelect/ChainSelect.d.ts.map +1 -0
- package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
- package/dist/esm/components/ChainSelect/ChainSelect.style.d.ts +10 -0
- package/dist/esm/components/ChainSelect/ChainSelect.style.d.ts.map +1 -0
- package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
- package/dist/esm/components/Chains/ChainList.js.map +1 -1
- package/dist/esm/components/Chains/ChainListItem.js.map +1 -1
- package/dist/esm/components/Chains/ChainsExpanded.js.map +1 -1
- package/dist/esm/components/Chains/PinChainButton.js.map +1 -1
- package/dist/esm/components/Chains/SelectChainExpansionContent.js.map +1 -1
- package/dist/esm/components/Chains/SelectChainPageContent.js.map +1 -1
- package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
- package/dist/esm/components/ContextMenu.js.map +1 -1
- package/dist/esm/components/ContractComponent/ContractComponent.d.ts +7 -0
- package/dist/esm/components/ContractComponent/ContractComponent.d.ts.map +1 -0
- package/dist/esm/components/ContractComponent/ItemPrice.d.ts +0 -1
- package/dist/esm/components/ContractComponent/ItemPrice.d.ts.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFT.d.ts +0 -1
- package/dist/esm/components/ContractComponent/NFT/NFT.d.ts.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.d.ts +0 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.d.ts.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.js.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/types.d.ts +0 -1
- package/dist/esm/components/ContractComponent/NFT/types.d.ts.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/ExecutionChecklist.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.d.ts +21 -0
- package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.d.ts.map +1 -0
- package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/StaggeredRevealTypography.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/StatusIcon.d.ts +16 -0
- package/dist/esm/components/ExecutionStatusCard/StatusIcon.d.ts.map +1 -0
- package/dist/esm/components/ExecutionStatusCard/StatusIcon.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/iconKey.js +1 -0
- package/dist/esm/components/ExecutionStatusCard/iconKey.js.map +1 -1
- package/dist/esm/components/Expansion/Expansion.js.map +1 -1
- package/dist/esm/components/Expansion/ExpansionTransition.js.map +1 -1
- package/dist/esm/components/FeeBreakdownTooltip.d.ts +13 -0
- package/dist/esm/components/FeeBreakdownTooltip.d.ts.map +1 -0
- package/dist/esm/components/FeeBreakdownTooltip.js.map +1 -1
- package/dist/esm/components/Header/ActivitiesButton.js.map +1 -1
- package/dist/esm/components/Header/BackButton.js.map +1 -1
- package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
- package/dist/esm/components/Header/DisconnectIconButton.js.map +1 -1
- package/dist/esm/components/Header/HeaderTabs.js.map +1 -1
- package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
- package/dist/esm/components/Header/SettingsButton.js.map +1 -1
- package/dist/esm/components/Header/WalletHeader.js.map +1 -1
- package/dist/esm/components/Header/WalletMenu.js.map +1 -1
- package/dist/esm/components/IconCircle/IconCircle.d.ts +11 -0
- package/dist/esm/components/IconCircle/IconCircle.d.ts.map +1 -0
- package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
- package/dist/esm/components/IconCircle/statusIcons.d.ts +6 -0
- package/dist/esm/components/IconCircle/statusIcons.d.ts.map +1 -0
- package/dist/esm/components/IconTypography.d.ts +7 -0
- package/dist/esm/components/IconTypography.d.ts.map +1 -0
- package/dist/esm/components/LimitOrderSettings/LimitOrderSettings.js.map +1 -1
- package/dist/esm/components/LimitPriceCard/LimitPriceCard.js.map +1 -1
- package/dist/esm/components/LimitPriceCard/LimitPricePresets.js.map +1 -1
- package/dist/esm/components/ListItem/ListItemButton.d.ts +7 -0
- package/dist/esm/components/ListItem/ListItemButton.d.ts.map +1 -0
- package/dist/esm/components/ListItemButton.d.ts +7 -0
- package/dist/esm/components/ListItemButton.d.ts.map +1 -0
- package/dist/esm/components/Messages/AccountDeployedMessage.js.map +1 -1
- package/dist/esm/components/Messages/AccountNotDeployedMessage.js.map +1 -1
- package/dist/esm/components/Messages/AlertMessage.js.map +1 -1
- package/dist/esm/components/Messages/FundsSufficiencyMessage.js.map +1 -1
- package/dist/esm/components/Messages/GasRefuelMessage.js.map +1 -1
- package/dist/esm/components/Messages/GasSufficiencyMessage.js.map +1 -1
- package/dist/esm/components/Messages/MinFromAmountUSDMessage.js.map +1 -1
- package/dist/esm/components/Messages/MissingRouteRequiredAccountMessage.js.map +1 -1
- package/dist/esm/components/Messages/WarningMessages.d.ts +11 -0
- package/dist/esm/components/Messages/WarningMessages.d.ts.map +1 -0
- package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
- package/dist/esm/components/NotFound.js.map +1 -1
- package/dist/esm/components/PageContainer.d.ts +12 -0
- package/dist/esm/components/PageContainer.d.ts.map +1 -0
- package/dist/esm/components/PoweredBy/PoweredBy.d.ts +5 -0
- package/dist/esm/components/PoweredBy/PoweredBy.d.ts.map +1 -0
- package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
- package/dist/esm/components/ProgressToNextUpdate.d.ts +10 -0
- package/dist/esm/components/ProgressToNextUpdate.d.ts.map +1 -0
- package/dist/esm/components/ProgressToNextUpdate.js.map +1 -1
- package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCard.d.ts +7 -0
- package/dist/esm/components/RouteCard/RouteCard.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardSkeleton.d.ts +7 -0
- package/dist/esm/components/RouteCard/RouteCardSkeleton.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteCardSkeleton.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteDetails.d.ts +10 -0
- package/dist/esm/components/RouteCard/RouteDetails.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteDetails.style.d.ts +12 -0
- package/dist/esm/components/RouteCard/RouteDetails.style.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteNotFoundCard.d.ts +5 -0
- package/dist/esm/components/RouteCard/RouteNotFoundCard.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteNotFoundCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteProviderCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteToken.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteTokens.d.ts +11 -0
- package/dist/esm/components/RouteCard/RouteTokens.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteTokens.js +2 -2
- package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
- package/dist/esm/components/RouteCard/types.d.ts +14 -0
- package/dist/esm/components/RouteCard/types.d.ts.map +1 -0
- package/dist/esm/components/Routes/LimitOrderRoutes.js.map +1 -1
- package/dist/esm/components/Routes/Routes.js.map +1 -1
- package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
- package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
- package/dist/esm/components/Search/SearchInput.d.ts +17 -0
- package/dist/esm/components/Search/SearchInput.d.ts.map +1 -0
- package/dist/esm/components/Search/SearchInput.js.map +1 -1
- package/dist/esm/components/SelectChainAndToken.js.map +1 -1
- package/dist/esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletButton.d.ts +10 -0
- package/dist/esm/components/SendToWallet/SendToWalletButton.d.ts.map +1 -0
- package/dist/esm/components/SendToWallet/SendToWalletButton.js +15 -6
- package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
- package/dist/esm/components/SettingsPanel/SettingsPanel.js.map +1 -1
- package/dist/esm/components/Skeleton/WidgetSkeleton.d.ts +1 -4
- package/dist/esm/components/Skeleton/WidgetSkeleton.d.ts.map +1 -1
- package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
- package/dist/esm/components/Step/StepActions.js.map +1 -1
- package/dist/esm/components/StepActions/SentToWalletRow.d.ts +9 -0
- package/dist/esm/components/StepActions/SentToWalletRow.d.ts.map +1 -0
- package/dist/esm/components/StepActions/SentToWalletRow.js.map +1 -1
- package/dist/esm/components/StepActions/StepActionRow.js.map +1 -1
- package/dist/esm/components/StepActions/StepActionRow.style.d.ts +7 -0
- package/dist/esm/components/StepActions/StepActionRow.style.d.ts.map +1 -0
- package/dist/esm/components/StepActions/StepActionsList.d.ts +12 -0
- package/dist/esm/components/StepActions/StepActionsList.d.ts.map +1 -0
- package/dist/esm/components/StepActions/StepActionsList.js.map +1 -1
- package/dist/esm/components/StepActions/executionRows.d.ts +26 -0
- package/dist/esm/components/StepActions/executionRows.d.ts.map +1 -0
- package/dist/esm/components/SwapButton/SwapButton.js.map +1 -1
- package/dist/esm/components/TextFitter/TextFitter.js.map +1 -1
- package/dist/esm/components/Timer/StepStatusTimer.js.map +1 -1
- package/dist/esm/components/Token/Token.d.ts +17 -0
- package/dist/esm/components/Token/Token.d.ts.map +1 -0
- package/dist/esm/components/Token/Token.js.map +1 -1
- package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
- package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
- package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
- package/dist/esm/components/TokenList/TokenList.js.map +1 -1
- package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
- package/dist/esm/components/TokenList/TokenNotFound.d.ts +6 -0
- package/dist/esm/components/TokenList/TokenNotFound.d.ts.map +1 -0
- package/dist/esm/components/TokenList/VirtualizedTokenList.d.ts +7 -0
- package/dist/esm/components/TokenList/VirtualizedTokenList.d.ts.map +1 -0
- package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
- package/dist/esm/components/TokenList/types.d.ts +20 -0
- package/dist/esm/components/TokenList/types.d.ts.map +1 -0
- package/dist/esm/components/TokenList/useTokenSelect.d.ts +6 -0
- package/dist/esm/components/TokenList/useTokenSelect.d.ts.map +1 -0
- package/dist/esm/components/TokenPillButton/TokenPillButton.js.map +1 -1
- package/dist/esm/components/TokenRate/TokenRate.d.ts +10 -0
- package/dist/esm/components/TokenRate/TokenRate.d.ts.map +1 -0
- package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
- package/dist/esm/components/Tools/ToolItem.js.map +1 -1
- package/dist/esm/components/Tools/Tools.js.map +1 -1
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js +1 -0
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js +9 -0
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js.map +1 -1
- package/dist/esm/components/TransactionCard/TransactionCard.js.map +1 -1
- package/dist/esm/components/TransactionCard/TransactionCard.style.d.ts +8 -0
- package/dist/esm/components/TransactionCard/TransactionCard.style.d.ts.map +1 -0
- package/dist/esm/components/TransactionCard/TransactionCardSkeleton.js.map +1 -1
- package/dist/esm/config/constants.d.ts.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.d.ts.map +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/config/version.js.map +1 -1
- package/dist/esm/hooks/useAccountsBalancesData.js +1 -14
- package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
- package/dist/esm/hooks/useAddressActivity.d.ts +11 -0
- package/dist/esm/hooks/useAddressActivity.d.ts.map +1 -0
- package/dist/esm/hooks/useAddressValidation.d.ts +28 -0
- package/dist/esm/hooks/useAddressValidation.d.ts.map +1 -0
- package/dist/esm/hooks/useAddressValidation.js +6 -1
- package/dist/esm/hooks/useAddressValidation.js.map +1 -1
- package/dist/esm/hooks/useAvailableChains.d.ts +12 -0
- package/dist/esm/hooks/useAvailableChains.d.ts.map +1 -0
- package/dist/esm/hooks/useChain.d.ts +10 -0
- package/dist/esm/hooks/useChain.d.ts.map +1 -0
- package/dist/esm/hooks/useContactSupport.d.ts +5 -0
- package/dist/esm/hooks/useContactSupport.d.ts.map +1 -0
- package/dist/esm/hooks/useDebouncedWatch.d.ts +6 -0
- package/dist/esm/hooks/useDebouncedWatch.d.ts.map +1 -0
- package/dist/esm/hooks/useDisplayedTokens.js +48 -0
- package/dist/esm/hooks/useDisplayedTokens.js.map +1 -0
- package/dist/esm/hooks/useExplorer.d.ts +14 -0
- package/dist/esm/hooks/useExplorer.d.ts.map +1 -0
- package/dist/esm/hooks/useHeader.d.ts +6 -0
- package/dist/esm/hooks/useHeader.d.ts.map +1 -0
- package/dist/esm/hooks/useListHeight.d.ts +12 -0
- package/dist/esm/hooks/useListHeight.d.ts.map +1 -0
- package/dist/esm/hooks/useListHeight.js +1 -0
- package/dist/esm/hooks/useListHeight.js.map +1 -1
- package/dist/esm/hooks/useNavigateBack.d.ts +5 -0
- package/dist/esm/hooks/useNavigateBack.d.ts.map +1 -0
- package/dist/esm/hooks/usePacedRouteExecution.js +1 -0
- package/dist/esm/hooks/usePacedRouteExecution.js.map +1 -1
- package/dist/esm/hooks/useRouteExecution.d.ts +18 -0
- package/dist/esm/hooks/useRouteExecution.d.ts.map +1 -0
- package/dist/esm/hooks/useRouteExecutionMessage.d.ts +10 -0
- package/dist/esm/hooks/useRouteExecutionMessage.d.ts.map +1 -0
- package/dist/esm/hooks/useRouteExecutionMessage.js +1 -0
- package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
- package/dist/esm/hooks/useRoutes.d.ts +32 -0
- package/dist/esm/hooks/useRoutes.d.ts.map +1 -0
- package/dist/esm/hooks/useRoutes.js +12 -8
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -1
- package/dist/esm/hooks/useToAddressRequirements.d.ts +16 -0
- package/dist/esm/hooks/useToAddressRequirements.d.ts.map +1 -0
- package/dist/esm/hooks/useToken.d.ts +9 -0
- package/dist/esm/hooks/useToken.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenAddressBalance.d.ts +11 -0
- package/dist/esm/hooks/useTokenAddressBalance.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenBalances.d.ts +14 -0
- package/dist/esm/hooks/useTokenBalances.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenBalances.js +5 -45
- package/dist/esm/hooks/useTokenBalances.js.map +1 -1
- package/dist/esm/hooks/useTokenBalancesQueries.js +5 -3
- package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
- package/dist/esm/hooks/useTokenList.d.ts +16 -0
- package/dist/esm/hooks/useTokenList.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenList.js +31 -0
- package/dist/esm/hooks/useTokenList.js.map +1 -0
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/hooks/useTools.d.ts +8 -0
- package/dist/esm/hooks/useTools.d.ts.map +1 -0
- package/dist/esm/hooks/useTransactionDetails.js +1 -3
- package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
- package/dist/esm/hooks/useTransactionList.js +1 -0
- package/dist/esm/hooks/useTransactionList.js.map +1 -1
- package/dist/esm/hooks/useWidgetChains.d.ts +0 -1
- package/dist/esm/hooks/useWidgetChains.d.ts.map +1 -1
- package/dist/esm/hooks/useWidgetEvents.d.ts +0 -1
- package/dist/esm/hooks/useWidgetEvents.d.ts.map +1 -1
- package/dist/esm/i18n/en.json +321 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js +1 -0
- package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
- package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js.map +1 -1
- package/dist/esm/pages/LanguagesPage.js.map +1 -1
- package/dist/esm/pages/MainPage/LimitPageContent.js.map +1 -1
- package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
- package/dist/esm/pages/MainPage/MainPageActions.js.map +1 -1
- package/dist/esm/pages/MainPage/MainWarningMessages.d.ts +10 -0
- package/dist/esm/pages/MainPage/MainWarningMessages.d.ts.map +1 -0
- package/dist/esm/pages/RoutePriorityPage.js.map +1 -1
- package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
- package/dist/esm/pages/RoutesPage/RoutesPage.style.d.ts +7 -0
- package/dist/esm/pages/RoutesPage/RoutesPage.style.d.ts.map +1 -0
- package/dist/esm/pages/SelectChainPage/SelectChainPage.d.ts +6 -0
- package/dist/esm/pages/SelectChainPage/SelectChainPage.d.ts.map +1 -0
- package/dist/esm/pages/SelectChainPage/types.d.ts +8 -0
- package/dist/esm/pages/SelectChainPage/types.d.ts.map +1 -0
- package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.d.ts +10 -0
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.d.ts.map +1 -0
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
- package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
- package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/GasPriceSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/LanguageSetting.js.map +1 -1
- package/dist/esm/pages/SettingsPage/ResetSettingsButton.js.map +1 -1
- package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsCard/BadgedValue.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SlippageSettings/SlippagePage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.d.ts +9 -0
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.d.ts.map +1 -0
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/ReceiptsCard.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.d.ts +14 -0
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.d.ts +19 -0
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.d.ts +12 -0
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.js +1 -0
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.js.map +1 -1
- package/dist/esm/pages/TransactionPage/RouteTracker.d.ts +11 -0
- package/dist/esm/pages/TransactionPage/RouteTracker.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/StartTransactionButton.d.ts +6 -0
- package/dist/esm/pages/TransactionPage/StartTransactionButton.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.d.ts +15 -0
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionContent.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionContent.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.d.ts +12 -0
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionFailedButtons.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionPage.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionReview.js.map +1 -1
- package/dist/esm/pages/TransactionPage/types.d.ts +9 -0
- package/dist/esm/pages/TransactionPage/types.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/utils.d.ts +6 -0
- package/dist/esm/pages/TransactionPage/utils.d.ts.map +1 -0
- package/dist/esm/providers/I18nProvider/I18nProvider.d.ts +5 -0
- package/dist/esm/providers/I18nProvider/I18nProvider.d.ts.map +1 -0
- package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
- package/dist/esm/providers/I18nProvider/types.d.ts +2 -3
- package/dist/esm/providers/I18nProvider/types.d.ts.map +1 -1
- package/dist/esm/providers/QueryClientProvider.d.ts +6 -0
- package/dist/esm/providers/QueryClientProvider.d.ts.map +1 -0
- package/dist/esm/providers/SDKClientProvider.d.ts +8 -0
- package/dist/esm/providers/SDKClientProvider.d.ts.map +1 -0
- package/dist/esm/providers/WalletProvider/WalletProvider.d.ts +10 -0
- package/dist/esm/providers/WalletProvider/WalletProvider.d.ts.map +1 -0
- package/dist/esm/providers/WalletProvider/WalletProvider.js +8 -3
- package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
- package/dist/esm/providers/WidgetProvider/WidgetProvider.d.ts +8 -0
- package/dist/esm/providers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
- package/dist/esm/providers/WidgetProvider/types.d.ts +11 -0
- package/dist/esm/providers/WidgetProvider/types.d.ts.map +1 -0
- package/dist/esm/shared.d.ts +107 -0
- package/dist/esm/shared.js +105 -0
- package/dist/esm/stores/StoreProvider.d.ts +7 -0
- package/dist/esm/stores/StoreProvider.d.ts.map +1 -0
- package/dist/esm/stores/StoreProvider.js.map +1 -1
- package/dist/esm/stores/bookmarks/BookmarkStore.d.ts +7 -0
- package/dist/esm/stores/bookmarks/BookmarkStore.d.ts.map +1 -0
- package/dist/esm/stores/bookmarks/types.d.ts +0 -1
- package/dist/esm/stores/bookmarks/types.d.ts.map +1 -1
- package/dist/esm/stores/chains/ChainOrderStore.d.ts +8 -0
- package/dist/esm/stores/chains/ChainOrderStore.d.ts.map +1 -0
- package/dist/esm/stores/chains/types.d.ts +27 -0
- package/dist/esm/stores/chains/types.d.ts.map +1 -0
- package/dist/esm/stores/form/FormStore.js.map +1 -1
- package/dist/esm/stores/form/FormUpdater.js.map +1 -1
- package/dist/esm/stores/form/createFormStore.js +1 -0
- package/dist/esm/stores/form/createFormStore.js.map +1 -1
- package/dist/esm/stores/form/types.d.ts +7 -7
- package/dist/esm/stores/form/types.d.ts.map +1 -1
- package/dist/esm/stores/form/types.js.map +1 -1
- package/dist/esm/stores/form/useFieldActions.d.ts +0 -1
- package/dist/esm/stores/form/useFieldActions.d.ts.map +1 -1
- package/dist/esm/stores/form/useFieldValues.d.ts +0 -1
- package/dist/esm/stores/form/useFieldValues.d.ts.map +1 -1
- package/dist/esm/stores/header/types.d.ts +20 -0
- package/dist/esm/stores/header/types.d.ts.map +1 -0
- package/dist/esm/stores/header/useHeaderStore.d.ts +8 -0
- package/dist/esm/stores/header/useHeaderStore.d.ts.map +1 -0
- package/dist/esm/stores/inputMode/useInputModeStore.d.ts +13 -0
- package/dist/esm/stores/inputMode/useInputModeStore.d.ts.map +1 -0
- package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js.map +1 -1
- package/dist/esm/stores/routes/RouteExecutionStore.d.ts +9 -0
- package/dist/esm/stores/routes/RouteExecutionStore.d.ts.map +1 -0
- package/dist/esm/stores/routes/createRouteExecutionStore.js +1 -0
- package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
- package/dist/esm/stores/routes/types.d.ts +24 -0
- package/dist/esm/stores/routes/types.d.ts.map +1 -0
- package/dist/esm/stores/routes/types.js +14 -0
- package/dist/esm/stores/routes/types.js.map +1 -0
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js +1 -0
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
- package/dist/esm/stores/routes/utils.d.ts +9 -0
- package/dist/esm/stores/routes/utils.d.ts.map +1 -0
- package/dist/esm/stores/settings/SettingsStore.d.ts +8 -0
- package/dist/esm/stores/settings/SettingsStore.d.ts.map +1 -0
- package/dist/esm/stores/settings/types.d.ts +5 -2
- package/dist/esm/stores/settings/types.d.ts.map +1 -1
- package/dist/esm/stores/types.d.ts +9 -0
- package/dist/esm/stores/types.d.ts.map +1 -0
- package/dist/esm/themes/azureLight.d.ts +0 -1
- package/dist/esm/themes/azureLight.d.ts.map +1 -1
- package/dist/esm/themes/createTheme.d.ts +0 -1
- package/dist/esm/themes/createTheme.d.ts.map +1 -1
- package/dist/esm/themes/jumper.d.ts +0 -1
- package/dist/esm/themes/jumper.d.ts.map +1 -1
- package/dist/esm/themes/palettes.d.ts.map +1 -1
- package/dist/esm/themes/types.d.ts +0 -1
- package/dist/esm/themes/types.d.ts.map +1 -1
- package/dist/esm/themes/watermelonLight.d.ts +0 -1
- package/dist/esm/themes/watermelonLight.d.ts.map +1 -1
- package/dist/esm/themes/windows95.d.ts +0 -1
- package/dist/esm/themes/windows95.d.ts.map +1 -1
- package/dist/esm/types/events.d.ts +4 -3
- package/dist/esm/types/events.d.ts.map +1 -1
- package/dist/esm/types/token.d.ts +1 -2
- package/dist/esm/types/token.d.ts.map +1 -1
- package/dist/esm/types/widget.d.ts +72 -73
- package/dist/esm/types/widget.d.ts.map +1 -1
- package/dist/esm/utils/compactNumberFormatter.d.ts +8 -8
- package/dist/esm/utils/compactNumberFormatter.d.ts.map +1 -1
- package/dist/esm/utils/converters.d.ts +7 -0
- package/dist/esm/utils/converters.d.ts.map +1 -0
- package/dist/esm/utils/currencyExtendedFormatter.d.ts.map +1 -1
- package/dist/esm/utils/elements.d.ts +11 -0
- package/dist/esm/utils/elements.d.ts.map +1 -0
- package/dist/esm/utils/elements.js +8 -1
- package/dist/esm/utils/elements.js.map +1 -1
- package/dist/esm/utils/enum.d.ts +5 -0
- package/dist/esm/utils/enum.d.ts.map +1 -0
- package/dist/esm/utils/fees.d.ts +17 -0
- package/dist/esm/utils/fees.d.ts.map +1 -0
- package/dist/esm/utils/format.d.ts +14 -14
- package/dist/esm/utils/format.d.ts.map +1 -1
- package/dist/esm/utils/getPriceImpact.d.ts +1 -7
- package/dist/esm/utils/getPriceImpact.d.ts.map +1 -1
- package/dist/esm/utils/input.d.ts +5 -0
- package/dist/esm/utils/input.d.ts.map +1 -0
- package/dist/esm/utils/navigationRoutes.d.ts.map +1 -1
- package/dist/esm/utils/percentFormatter.d.ts +5 -5
- package/dist/esm/utils/percentFormatter.d.ts.map +1 -1
- package/dist/esm/utils/tokenList.js +3 -6
- package/dist/esm/utils/tokenList.js.map +1 -1
- package/dist/esm/utils/wallet.d.ts +5 -0
- package/dist/esm/utils/wallet.d.ts.map +1 -0
- package/package.json +29 -21
- package/src/components/RouteCard/RouteTokens.tsx +3 -2
- package/src/components/SendToWallet/SendToWalletButton.tsx +27 -5
- package/src/components/TransactionCard/ActiveTransactionCard.style.tsx +11 -0
- package/src/config/version.ts +1 -1
- package/src/hooks/useAccountsBalancesData.ts +4 -31
- package/src/hooks/useDisplayedTokens.ts +70 -0
- package/src/hooks/useListHeight.ts +4 -0
- package/src/hooks/useRoutes.ts +360 -325
- package/src/hooks/useTokenBalances.ts +8 -53
- package/src/hooks/useTokenBalancesQueries.ts +12 -4
- package/src/hooks/useTokenList.ts +59 -0
- package/src/hooks/useTransactionDetails.ts +1 -3
- package/src/providers/WalletProvider/WalletProvider.tsx +15 -3
- package/src/shared.ts +191 -0
- package/src/stores/form/createFormStore.ts +1 -0
- package/src/stores/form/types.ts +1 -0
- package/src/utils/tokenList.ts +4 -12
- package/dist/esm/hooks/useFilteredByTokenBalances.js +0 -74
- package/dist/esm/hooks/useFilteredByTokenBalances.js.map +0 -1
- package/src/hooks/useFilteredByTokenBalances.ts +0 -145
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { useMemo } from 'react'
|
|
2
2
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
3
3
|
import type { FormType } from '../stores/form/types.js'
|
|
4
|
-
import { usePinnedTokensStore } from '../stores/pinnedTokens/PinnedTokensStore.js'
|
|
5
4
|
import { useSettings } from '../stores/settings/useSettings.js'
|
|
6
5
|
import type { TokenAmount } from '../types/token.js'
|
|
7
6
|
import { formatTokenPrice } from '../utils/format.js'
|
|
8
|
-
import { isSearchMatch,
|
|
7
|
+
import { isSearchMatch, processTokenList } from '../utils/tokenList.js'
|
|
9
8
|
import { useAccountsBalancesData } from './useAccountsBalancesData.js'
|
|
9
|
+
import { useDisplayedTokens } from './useDisplayedTokens.js'
|
|
10
10
|
import { useTokenBalancesQueries } from './useTokenBalancesQueries.js'
|
|
11
|
-
import { useTokens } from './useTokens.js'
|
|
12
11
|
|
|
13
12
|
export const useTokenBalances = (
|
|
14
13
|
selectedChainId?: number,
|
|
@@ -23,12 +22,14 @@ export const useTokenBalances = (
|
|
|
23
22
|
isSearchLoading: boolean
|
|
24
23
|
isBalanceLoading: boolean
|
|
25
24
|
} => {
|
|
26
|
-
const { hiddenUI } = useWidgetConfig()
|
|
25
|
+
const { hiddenUI, tokens: configTokens } = useWidgetConfig()
|
|
27
26
|
const {
|
|
28
27
|
allTokens,
|
|
29
|
-
|
|
28
|
+
displayedTokensList,
|
|
29
|
+
isPinnedToken,
|
|
30
|
+
isTokensLoading,
|
|
30
31
|
isSearchLoading,
|
|
31
|
-
} =
|
|
32
|
+
} = useDisplayedTokens(selectedChainId, formType, isAllNetworks, search)
|
|
32
33
|
|
|
33
34
|
const { data: accountsWithAllTokens, isLoading: isAccountsLoading } =
|
|
34
35
|
useAccountsBalancesData(selectedChainId, formType, isAllNetworks, allTokens)
|
|
@@ -39,58 +40,12 @@ export const useTokenBalances = (
|
|
|
39
40
|
const { data: allTokensWithBalances, isLoading: isBalanceQueriesLoading } =
|
|
40
41
|
useTokenBalancesQueries(accountsWithAllTokens, isBalanceLoadingEnabled)
|
|
41
42
|
|
|
42
|
-
const { tokens: configTokens } = useWidgetConfig()
|
|
43
43
|
const { smallBalanceThreshold } = useSettings(['smallBalanceThreshold'])
|
|
44
44
|
|
|
45
|
-
const pinnedTokens = usePinnedTokensStore((state) => state.pinnedTokens)
|
|
46
|
-
|
|
47
45
|
const isBalanceLoading =
|
|
48
46
|
(isBalanceQueriesLoading || isAccountsLoading) &&
|
|
49
47
|
!allTokensWithBalances?.length
|
|
50
48
|
|
|
51
|
-
// Create function to check if token is pinned
|
|
52
|
-
const isPinnedToken = useMemo(() => {
|
|
53
|
-
if (isAllNetworks) {
|
|
54
|
-
// For all networks, check all pinned tokens
|
|
55
|
-
const allPinned: Array<{ chainId: number; tokenAddress: string }> = []
|
|
56
|
-
Object.entries(pinnedTokens).forEach(([chainIdStr, addresses]) => {
|
|
57
|
-
const chainId = Number.parseInt(chainIdStr, 10)
|
|
58
|
-
addresses.forEach((address) => {
|
|
59
|
-
allPinned.push({ chainId, tokenAddress: address })
|
|
60
|
-
})
|
|
61
|
-
})
|
|
62
|
-
const pinnedSet = new Set(
|
|
63
|
-
allPinned.map((p) => `${p.chainId}-${p.tokenAddress.toLowerCase()}`)
|
|
64
|
-
)
|
|
65
|
-
return (chainId: number, tokenAddress: string) => {
|
|
66
|
-
const key = `${chainId}-${tokenAddress.toLowerCase()}`
|
|
67
|
-
return pinnedSet.has(key)
|
|
68
|
-
}
|
|
69
|
-
} else if (selectedChainId) {
|
|
70
|
-
// For single chain, check only selected chain
|
|
71
|
-
const chainPinnedTokens = pinnedTokens[selectedChainId] || []
|
|
72
|
-
const pinnedSet = new Set(
|
|
73
|
-
chainPinnedTokens.map((addr) => addr.toLowerCase())
|
|
74
|
-
)
|
|
75
|
-
return (chainId: number, tokenAddress: string) => {
|
|
76
|
-
return (
|
|
77
|
-
chainId === selectedChainId &&
|
|
78
|
-
pinnedSet.has(tokenAddress.toLowerCase())
|
|
79
|
-
)
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return undefined
|
|
83
|
-
}, [isAllNetworks, selectedChainId, pinnedTokens])
|
|
84
|
-
|
|
85
|
-
const displayedTokensList = useMemo(() => {
|
|
86
|
-
const tokensByChain = isAllNetworks
|
|
87
|
-
? Object.values(allTokens ?? {}).flat()
|
|
88
|
-
: selectedChainId
|
|
89
|
-
? allTokens?.[selectedChainId]
|
|
90
|
-
: undefined
|
|
91
|
-
return tokensByChain?.filter((t) => isSearchMatch(t, search)) ?? []
|
|
92
|
-
}, [allTokens, isAllNetworks, selectedChainId, search])
|
|
93
|
-
|
|
94
49
|
const displayedTokensWithBalances = useMemo(() => {
|
|
95
50
|
const balancesByChain = isAllNetworks
|
|
96
51
|
? allTokensWithBalances
|
|
@@ -160,7 +115,7 @@ export const useTokenBalances = (
|
|
|
160
115
|
])
|
|
161
116
|
|
|
162
117
|
const { processedTokens, withCategories, withPinnedTokens } = useMemo(() => {
|
|
163
|
-
return
|
|
118
|
+
return processTokenList(
|
|
164
119
|
isBalanceLoading,
|
|
165
120
|
isAllNetworks || !!search,
|
|
166
121
|
configTokens,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getTokenBalances, type TokenExtended } from '@lifi/sdk'
|
|
2
|
-
import { useQueries } from '@tanstack/react-query'
|
|
2
|
+
import { keepPreviousData, useQueries } from '@tanstack/react-query'
|
|
3
3
|
import { useMemo, useRef } from 'react'
|
|
4
4
|
import { useSDKClient } from '../providers/SDKClientProvider.js'
|
|
5
5
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
@@ -7,6 +7,10 @@ import type { TokenAmount, TokenAmountExtended } from '../types/token.js'
|
|
|
7
7
|
import { getQueryKey } from '../utils/queries.js'
|
|
8
8
|
|
|
9
9
|
const defaultRefetchInterval = 32_000
|
|
10
|
+
// Max time to hold the skeleton before revealing balances in the multi-chain view.
|
|
11
|
+
// Sits just below the typical full-settle time so the list reveals once, sorted,
|
|
12
|
+
// instead of reordering as each chain streams in.
|
|
13
|
+
const balanceRevealTimeout = 2_000
|
|
10
14
|
|
|
11
15
|
export const useTokenBalancesQueries = (
|
|
12
16
|
accountsWithTokens?: Record<string, Record<number, TokenExtended[]>>,
|
|
@@ -44,7 +48,10 @@ export const useTokenBalancesQueries = (
|
|
|
44
48
|
enabled: isBalanceLoadingEnabled,
|
|
45
49
|
refetchInterval: defaultRefetchInterval,
|
|
46
50
|
staleTime: defaultRefetchInterval,
|
|
47
|
-
|
|
51
|
+
placeholderData: keepPreviousData,
|
|
52
|
+
// Resolve a failed chain immediately instead of retrying past the reveal
|
|
53
|
+
// window (retries would pop the chain in late and re-sort the list).
|
|
54
|
+
retry: false,
|
|
48
55
|
}
|
|
49
56
|
})
|
|
50
57
|
)
|
|
@@ -74,8 +81,9 @@ export const useTokenBalancesQueries = (
|
|
|
74
81
|
? now - firstLoadStartRef.current
|
|
75
82
|
: 0
|
|
76
83
|
|
|
77
|
-
// Return results
|
|
78
|
-
const shouldReturnResults =
|
|
84
|
+
// Return results once all queries complete, or once the reveal timeout elapses
|
|
85
|
+
const shouldReturnResults =
|
|
86
|
+
allComplete || timeSinceStart >= balanceRevealTimeout
|
|
79
87
|
|
|
80
88
|
if (shouldReturnResults) {
|
|
81
89
|
const data: TokenAmount[] = results
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { useMemo } from 'react'
|
|
2
|
+
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
3
|
+
import type { FormType } from '../stores/form/types.js'
|
|
4
|
+
import type { TokenAmount } from '../types/token.js'
|
|
5
|
+
import { processTokenList } from '../utils/tokenList.js'
|
|
6
|
+
import { useDisplayedTokens } from './useDisplayedTokens.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Token-selection list without wallet balances - No accounts are resolved and no balance queries are fired.
|
|
10
|
+
*/
|
|
11
|
+
export const useTokenList = (
|
|
12
|
+
selectedChainId?: number,
|
|
13
|
+
formType?: FormType,
|
|
14
|
+
isAllNetworks?: boolean,
|
|
15
|
+
search?: string
|
|
16
|
+
): {
|
|
17
|
+
tokens: TokenAmount[]
|
|
18
|
+
withCategories: boolean
|
|
19
|
+
withPinnedTokens: boolean
|
|
20
|
+
isTokensLoading: boolean
|
|
21
|
+
isSearchLoading: boolean
|
|
22
|
+
} => {
|
|
23
|
+
const { tokens: configTokens } = useWidgetConfig()
|
|
24
|
+
const {
|
|
25
|
+
displayedTokensList,
|
|
26
|
+
isPinnedToken,
|
|
27
|
+
isTokensLoading,
|
|
28
|
+
isSearchLoading,
|
|
29
|
+
} = useDisplayedTokens(selectedChainId, formType, isAllNetworks, search)
|
|
30
|
+
|
|
31
|
+
const { processedTokens, withCategories, withPinnedTokens } = useMemo(
|
|
32
|
+
() =>
|
|
33
|
+
processTokenList(
|
|
34
|
+
/* withoutBalances */ true,
|
|
35
|
+
isAllNetworks || !!search,
|
|
36
|
+
configTokens,
|
|
37
|
+
selectedChainId,
|
|
38
|
+
displayedTokensList,
|
|
39
|
+
undefined,
|
|
40
|
+
isPinnedToken
|
|
41
|
+
),
|
|
42
|
+
[
|
|
43
|
+
isAllNetworks,
|
|
44
|
+
search,
|
|
45
|
+
configTokens,
|
|
46
|
+
selectedChainId,
|
|
47
|
+
displayedTokensList,
|
|
48
|
+
isPinnedToken,
|
|
49
|
+
]
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
tokens: processedTokens ?? [],
|
|
54
|
+
withCategories,
|
|
55
|
+
withPinnedTokens,
|
|
56
|
+
isTokensLoading,
|
|
57
|
+
isSearchLoading,
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -59,9 +59,7 @@ export const useTransactionDetails = (
|
|
|
59
59
|
if (fromAddress) {
|
|
60
60
|
queryClient.setQueryData<StatusResponse[]>(
|
|
61
61
|
[transactionHistoryQueryKey, fromAddress],
|
|
62
|
-
(data) =>
|
|
63
|
-
return [...data!, transaction!]
|
|
64
|
-
}
|
|
62
|
+
(data) => (data ? [...data, transaction!] : [transaction!])
|
|
65
63
|
)
|
|
66
64
|
}
|
|
67
65
|
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
import { useTranslation } from 'react-i18next'
|
|
11
11
|
import { useAvailableChains } from '../../hooks/useAvailableChains.js'
|
|
12
12
|
import { useInitializeSDKProviders } from '../../hooks/useInitializeSDKProviders.js'
|
|
13
|
+
import { getConfigItemSets, isItemAllowedForSets } from '../../utils/item.js'
|
|
13
14
|
import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
14
15
|
import { useExternalWalletProvider } from './useExternalWalletProvider.js'
|
|
15
16
|
|
|
@@ -21,12 +22,23 @@ export const WalletProvider = ({
|
|
|
21
22
|
children,
|
|
22
23
|
providers,
|
|
23
24
|
}: PropsWithChildren<WalletProviderProps>): JSX.Element => {
|
|
24
|
-
const { walletConfig } = useWidgetConfig()
|
|
25
|
+
const { walletConfig, chains: chainsConfig } = useWidgetConfig()
|
|
25
26
|
const { chains } = useAvailableChains()
|
|
26
27
|
const { i18n } = useTranslation()
|
|
27
28
|
const { useExternalWalletProvidersOnly, internalChainTypes } =
|
|
28
29
|
useExternalWalletProvider()
|
|
29
30
|
|
|
31
|
+
// Restrict offered wallets to the ecosystems allowed by chains.types config.
|
|
32
|
+
const enabledChainTypes = useMemo(() => {
|
|
33
|
+
const chainTypeSets = getConfigItemSets(
|
|
34
|
+
chainsConfig?.types,
|
|
35
|
+
(items) => new Set(items)
|
|
36
|
+
)
|
|
37
|
+
return internalChainTypes.filter((chainType) =>
|
|
38
|
+
isItemAllowedForSets(chainType, chainTypeSets)
|
|
39
|
+
)
|
|
40
|
+
}, [internalChainTypes, chainsConfig?.types])
|
|
41
|
+
|
|
30
42
|
if (
|
|
31
43
|
!providers.length &&
|
|
32
44
|
!useExternalWalletProvidersOnly &&
|
|
@@ -40,12 +52,12 @@ export const WalletProvider = ({
|
|
|
40
52
|
const walletManagementConfig = useMemo(
|
|
41
53
|
() => ({
|
|
42
54
|
locale: i18n.resolvedLanguage as never,
|
|
43
|
-
enabledChainTypes
|
|
55
|
+
enabledChainTypes,
|
|
44
56
|
walletEcosystemsOrder: walletConfig?.walletEcosystemsOrder,
|
|
45
57
|
}),
|
|
46
58
|
[
|
|
47
59
|
i18n.resolvedLanguage,
|
|
48
|
-
|
|
60
|
+
enabledChainTypes,
|
|
49
61
|
walletConfig?.walletEcosystemsOrder,
|
|
50
62
|
]
|
|
51
63
|
)
|
package/src/shared.ts
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// @lifi/widget/shared
|
|
3
|
+
//
|
|
4
|
+
// Internal surface shared with sibling packages (currently @lifi/widget-checkout).
|
|
5
|
+
// These exports are NOT part of the public widget API. They may change in any
|
|
6
|
+
// release without notice. Application code must not depend on this subpath.
|
|
7
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
// Propagate widget's MUI theme augmentations (theme.vars, custom palette keys,
|
|
10
|
+
// component variants) to any consumer that imports through this subpath.
|
|
11
|
+
import type {} from '@mui/material/themeCssVarsAugmentation'
|
|
12
|
+
import type {} from './themes/types.js'
|
|
13
|
+
|
|
14
|
+
// ── components ───────────────────────────────────────────────────────────────
|
|
15
|
+
export { ActionRow } from './components/ActionRow/ActionRow.js'
|
|
16
|
+
export {
|
|
17
|
+
FormControl,
|
|
18
|
+
Input,
|
|
19
|
+
} from './components/AmountInput/AmountInput.style.js'
|
|
20
|
+
export { AmountInputEndAdornment } from './components/AmountInput/AmountInputEndAdornment.js'
|
|
21
|
+
export { InputPriceButton } from './components/AmountInput/PriceFormHelperText.style.js'
|
|
22
|
+
export { AvatarBadgedDefault } from './components/Avatar/Avatar.js'
|
|
23
|
+
export { TokenAvatar } from './components/Avatar/TokenAvatar.js'
|
|
24
|
+
export { BaseTransactionButton } from './components/BaseTransactionButton/BaseTransactionButton.js'
|
|
25
|
+
export type { BottomSheetBase } from './components/BottomSheet/types.js'
|
|
26
|
+
export { ButtonTertiary } from './components/ButtonTertiary.js'
|
|
27
|
+
export { Card } from './components/Card/Card.js'
|
|
28
|
+
export { CardIconButton } from './components/Card/CardIconButton.js'
|
|
29
|
+
export { CardTitle } from './components/Card/CardTitle.js'
|
|
30
|
+
export { InputCard } from './components/Card/InputCard.js'
|
|
31
|
+
export { ChainSelect } from './components/ChainSelect/ChainSelect.js'
|
|
32
|
+
export { ChainAvatar } from './components/ChainSelect/ChainSelect.style.js'
|
|
33
|
+
export { ContractComponent } from './components/ContractComponent/ContractComponent.js'
|
|
34
|
+
export { ExecutionStatusCard } from './components/ExecutionStatusCard/ExecutionStatusCard.js'
|
|
35
|
+
export { StatusIcon } from './components/ExecutionStatusCard/StatusIcon.js'
|
|
36
|
+
export { FeeBreakdownTooltip } from './components/FeeBreakdownTooltip.js'
|
|
37
|
+
export { IconCircle } from './components/IconCircle/IconCircle.js'
|
|
38
|
+
export { IconTypography } from './components/IconTypography.js'
|
|
39
|
+
export { ListItemButton } from './components/ListItem/ListItemButton.js'
|
|
40
|
+
export { WarningMessages } from './components/Messages/WarningMessages.js'
|
|
41
|
+
export { PageContainer } from './components/PageContainer.js'
|
|
42
|
+
export { PoweredBy } from './components/PoweredBy/PoweredBy.js'
|
|
43
|
+
export { ProgressToNextUpdate } from './components/ProgressToNextUpdate.js'
|
|
44
|
+
export { RouteCard } from './components/RouteCard/RouteCard.js'
|
|
45
|
+
export { RouteCardSkeleton } from './components/RouteCard/RouteCardSkeleton.js'
|
|
46
|
+
export { RouteDetails } from './components/RouteCard/RouteDetails.js'
|
|
47
|
+
export {
|
|
48
|
+
DetailInfoIcon,
|
|
49
|
+
DetailLabel,
|
|
50
|
+
DetailLabelContainer,
|
|
51
|
+
DetailRow,
|
|
52
|
+
DetailValue,
|
|
53
|
+
} from './components/RouteCard/RouteDetails.style.js'
|
|
54
|
+
export { RouteNotFoundCard } from './components/RouteCard/RouteNotFoundCard.js'
|
|
55
|
+
export { RouteTokens } from './components/RouteCard/RouteTokens.js'
|
|
56
|
+
export { SearchInput } from './components/Search/SearchInput.js'
|
|
57
|
+
export { SendToWalletButton } from './components/SendToWallet/SendToWalletButton.js'
|
|
58
|
+
export {
|
|
59
|
+
type ExecutionRow,
|
|
60
|
+
useExecutionRows,
|
|
61
|
+
} from './components/StepActions/executionRows.js'
|
|
62
|
+
export { SentToWalletRow } from './components/StepActions/SentToWalletRow.js'
|
|
63
|
+
export { ExternalLink } from './components/StepActions/StepActionRow.style.js'
|
|
64
|
+
export { StepActionsList } from './components/StepActions/StepActionsList.js'
|
|
65
|
+
export { Token } from './components/Token/Token.js'
|
|
66
|
+
export { TokenNotFound } from './components/TokenList/TokenNotFound.js'
|
|
67
|
+
export { useTokenSelect } from './components/TokenList/useTokenSelect.js'
|
|
68
|
+
export { VirtualizedTokenList } from './components/TokenList/VirtualizedTokenList.js'
|
|
69
|
+
export { TokenRate } from './components/TokenRate/TokenRate.js'
|
|
70
|
+
export {
|
|
71
|
+
DateLabelContainer,
|
|
72
|
+
DateLabelText,
|
|
73
|
+
} from './components/TransactionCard/TransactionCard.style.js'
|
|
74
|
+
// ── hooks ────────────────────────────────────────────────────────────────────
|
|
75
|
+
export { useAddressActivity } from './hooks/useAddressActivity.js'
|
|
76
|
+
export {
|
|
77
|
+
AddressType,
|
|
78
|
+
useAddressValidation,
|
|
79
|
+
} from './hooks/useAddressValidation.js'
|
|
80
|
+
export { useAvailableChains } from './hooks/useAvailableChains.js'
|
|
81
|
+
export { useChain } from './hooks/useChain.js'
|
|
82
|
+
export { useContactSupport } from './hooks/useContactSupport.js'
|
|
83
|
+
export { useDebouncedWatch } from './hooks/useDebouncedWatch.js'
|
|
84
|
+
export { useExplorer } from './hooks/useExplorer.js'
|
|
85
|
+
export { useHeader } from './hooks/useHeader.js'
|
|
86
|
+
export { useListHeight } from './hooks/useListHeight.js'
|
|
87
|
+
export { useNavigateBack } from './hooks/useNavigateBack.js'
|
|
88
|
+
export { useRouteExecution } from './hooks/useRouteExecution.js'
|
|
89
|
+
export { useRouteExecutionMessage } from './hooks/useRouteExecutionMessage.js'
|
|
90
|
+
export { useRoutes } from './hooks/useRoutes.js'
|
|
91
|
+
export { useToAddressRequirements } from './hooks/useToAddressRequirements.js'
|
|
92
|
+
export { useToken } from './hooks/useToken.js'
|
|
93
|
+
export { useTokenAddressBalance } from './hooks/useTokenAddressBalance.js'
|
|
94
|
+
export { useTokenBalances } from './hooks/useTokenBalances.js'
|
|
95
|
+
export { useTokenList } from './hooks/useTokenList.js'
|
|
96
|
+
export { useTools } from './hooks/useTools.js'
|
|
97
|
+
export { useWidgetEvents } from './hooks/useWidgetEvents.js'
|
|
98
|
+
// ── pages ────────────────────────────────────────────────────────────────────
|
|
99
|
+
export { MainWarningMessages } from './pages/MainPage/MainWarningMessages.js'
|
|
100
|
+
export { Stack } from './pages/RoutesPage/RoutesPage.style.js'
|
|
101
|
+
export { SelectChainPage } from './pages/SelectChainPage/SelectChainPage.js'
|
|
102
|
+
export { SearchTokenInput } from './pages/SelectTokenPage/SearchTokenInput.js'
|
|
103
|
+
export { ContactSupportButton } from './pages/TransactionDetailsPage/ContactSupportButton.js'
|
|
104
|
+
export { ConfirmToAddressSheet } from './pages/TransactionPage/ConfirmToAddressSheet.js'
|
|
105
|
+
export {
|
|
106
|
+
ExchangeRateBottomSheet,
|
|
107
|
+
type ExchangeRateBottomSheetBase,
|
|
108
|
+
} from './pages/TransactionPage/ExchangeRateBottomSheet.js'
|
|
109
|
+
export { ExecutionDoneCard } from './pages/TransactionPage/ExecutionDoneCard.js'
|
|
110
|
+
export { RouteTracker } from './pages/TransactionPage/RouteTracker.js'
|
|
111
|
+
export { StartTransactionButton } from './pages/TransactionPage/StartTransactionButton.js'
|
|
112
|
+
export { TokenValueBottomSheet } from './pages/TransactionPage/TokenValueBottomSheet.js'
|
|
113
|
+
export { TransactionDoneButtons } from './pages/TransactionPage/TransactionDoneButtons.js'
|
|
114
|
+
export {
|
|
115
|
+
calculateValueLossPercentage,
|
|
116
|
+
getTokenValueLossThreshold,
|
|
117
|
+
} from './pages/TransactionPage/utils.js'
|
|
118
|
+
|
|
119
|
+
// ── providers ────────────────────────────────────────────────────────────────
|
|
120
|
+
export { I18nProvider } from './providers/I18nProvider/I18nProvider.js'
|
|
121
|
+
export { QueryClientProvider } from './providers/QueryClientProvider.js'
|
|
122
|
+
export {
|
|
123
|
+
SDKClientProvider,
|
|
124
|
+
useSDKClient,
|
|
125
|
+
} from './providers/SDKClientProvider.js'
|
|
126
|
+
export { WalletProvider } from './providers/WalletProvider/WalletProvider.js'
|
|
127
|
+
export {
|
|
128
|
+
useWidgetConfig,
|
|
129
|
+
WidgetProvider,
|
|
130
|
+
} from './providers/WidgetProvider/WidgetProvider.js'
|
|
131
|
+
|
|
132
|
+
// ── stores ───────────────────────────────────────────────────────────────────
|
|
133
|
+
export { BookmarkStoreProvider } from './stores/bookmarks/BookmarkStore.js'
|
|
134
|
+
export { useChainOrderStore } from './stores/chains/ChainOrderStore.js'
|
|
135
|
+
export {
|
|
136
|
+
FormKeyHelper,
|
|
137
|
+
type FormType,
|
|
138
|
+
type FormTypeProps,
|
|
139
|
+
} from './stores/form/types.js'
|
|
140
|
+
export { useFieldActions } from './stores/form/useFieldActions.js'
|
|
141
|
+
export { useFieldValues } from './stores/form/useFieldValues.js'
|
|
142
|
+
export {
|
|
143
|
+
useHeaderStore,
|
|
144
|
+
useSetHeaderHeight,
|
|
145
|
+
} from './stores/header/useHeaderStore.js'
|
|
146
|
+
export { useInputModeStore } from './stores/inputMode/useInputModeStore.js'
|
|
147
|
+
export {
|
|
148
|
+
useRouteExecutionStore,
|
|
149
|
+
useRouteExecutionStoreContext,
|
|
150
|
+
} from './stores/routes/RouteExecutionStore.js'
|
|
151
|
+
export { RouteExecutionStatus } from './stores/routes/types.js'
|
|
152
|
+
export {
|
|
153
|
+
getSourceTxHash,
|
|
154
|
+
isRouteActive,
|
|
155
|
+
isRouteDone,
|
|
156
|
+
isRouteFailed,
|
|
157
|
+
} from './stores/routes/utils.js'
|
|
158
|
+
export { StoreProvider } from './stores/StoreProvider.js'
|
|
159
|
+
export {
|
|
160
|
+
SettingsStoreProvider,
|
|
161
|
+
useSettingsStoreContext,
|
|
162
|
+
} from './stores/settings/SettingsStore.js'
|
|
163
|
+
|
|
164
|
+
// ── themes ───────────────────────────────────────────────────────────────────
|
|
165
|
+
export { createTheme } from './themes/createTheme.js'
|
|
166
|
+
|
|
167
|
+
// ── types ────────────────────────────────────────────────────────────────────
|
|
168
|
+
export { WidgetEvent } from './types/events.js'
|
|
169
|
+
export type {
|
|
170
|
+
FormRef,
|
|
171
|
+
WidgetConfig,
|
|
172
|
+
WidgetTheme,
|
|
173
|
+
} from './types/widget.js'
|
|
174
|
+
|
|
175
|
+
// ── utils ────────────────────────────────────────────────────────────────────
|
|
176
|
+
export { buildRouteFromTxHistory } from './utils/converters.js'
|
|
177
|
+
export { createElementId, ElementId } from './utils/elements.js'
|
|
178
|
+
export { hasEnumFlag } from './utils/enum.js'
|
|
179
|
+
export { getAccumulatedFeeCostsBreakdown } from './utils/fees.js'
|
|
180
|
+
export {
|
|
181
|
+
formatDuration,
|
|
182
|
+
formatInputAmount,
|
|
183
|
+
formatTokenAmount,
|
|
184
|
+
formatTokenPrice,
|
|
185
|
+
priceToTokenAmount,
|
|
186
|
+
usdDecimals,
|
|
187
|
+
} from './utils/format.js'
|
|
188
|
+
export { getPriceImpact } from './utils/getPriceImpact.js'
|
|
189
|
+
export { fitInputText } from './utils/input.js'
|
|
190
|
+
export { navigationRoutes } from './utils/navigationRoutes.js'
|
|
191
|
+
export { shortenAddress } from './utils/wallet.js'
|
package/src/stores/form/types.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface DefaultFieldValues {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export interface DefaultValues extends DefaultFieldValues {
|
|
15
|
+
cashFiatAmount: string
|
|
15
16
|
contractCalls?: ContractCall[]
|
|
16
17
|
tokenSearchFilter: string
|
|
17
18
|
/** Limit-order: when true, the price is displayed/entered inverted. */
|
package/src/utils/tokenList.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
formatUnits,
|
|
3
|
-
type TokenExtended,
|
|
4
|
-
type WalletTokenExtended,
|
|
5
|
-
} from '@lifi/sdk'
|
|
1
|
+
import { formatUnits, type TokenExtended } from '@lifi/sdk'
|
|
6
2
|
import type { TokenAmount, TokenAmountExtended } from '../types/token.js'
|
|
7
3
|
import type { WidgetTokens } from '../types/widget.js'
|
|
8
4
|
|
|
@@ -15,8 +11,8 @@ const sortByBalances = (a: TokenAmount, b: TokenAmount) =>
|
|
|
15
11
|
const sortByVolume = (a: TokenExtended, b: TokenExtended) =>
|
|
16
12
|
(b.volumeUSD24H ?? 0) - (a.volumeUSD24H ?? 0)
|
|
17
13
|
|
|
18
|
-
export const
|
|
19
|
-
|
|
14
|
+
export const processTokenList = (
|
|
15
|
+
withoutBalances: boolean,
|
|
20
16
|
noCategories: boolean,
|
|
21
17
|
configTokens?: WidgetTokens,
|
|
22
18
|
selectedChainId?: number,
|
|
@@ -28,7 +24,7 @@ export const processTokenBalances = (
|
|
|
28
24
|
withCategories: boolean
|
|
29
25
|
withPinnedTokens: boolean
|
|
30
26
|
} => {
|
|
31
|
-
if (
|
|
27
|
+
if (withoutBalances) {
|
|
32
28
|
if (noCategories) {
|
|
33
29
|
const sortedTokens = [...(tokens ?? [])].sort(sortByVolume)
|
|
34
30
|
// Separate pinned tokens
|
|
@@ -278,7 +274,3 @@ export const isSearchMatch = (
|
|
|
278
274
|
token.address?.toLowerCase().includes(searchLowerCase)
|
|
279
275
|
)
|
|
280
276
|
}
|
|
281
|
-
|
|
282
|
-
export const isSupportedToken = (token: WalletTokenExtended): boolean => {
|
|
283
|
-
return Boolean(token.name && token.symbol && token.priceUSD && token.chainId)
|
|
284
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { getConfigItemSets, isFormItemAllowed } from "../utils/item.js";
|
|
2
|
-
import { useWidgetConfig } from "../providers/WidgetProvider/WidgetProvider.js";
|
|
3
|
-
import { useSDKClient } from "../providers/SDKClientProvider.js";
|
|
4
|
-
import { getVerifiedTokensSets } from "../utils/token.js";
|
|
5
|
-
import { isSupportedToken } from "../utils/tokenList.js";
|
|
6
|
-
import { ChainType, getWalletBalances } from "@lifi/sdk";
|
|
7
|
-
import { useMemo } from "react";
|
|
8
|
-
import { useQuery } from "@tanstack/react-query";
|
|
9
|
-
//#region src/hooks/useFilteredByTokenBalances.ts
|
|
10
|
-
const useFilteredTokensByBalance = (accountsWithTokens, formType) => {
|
|
11
|
-
const { tokens: configTokens } = useWidgetConfig();
|
|
12
|
-
const sdkClient = useSDKClient();
|
|
13
|
-
const evmAddress = useMemo(() => {
|
|
14
|
-
return Object.entries(accountsWithTokens ?? {}).find(([_, { chainType }]) => chainType === ChainType.EVM)?.[0];
|
|
15
|
-
}, [accountsWithTokens]);
|
|
16
|
-
const { data: existingBalances, isLoading } = useQuery({
|
|
17
|
-
queryKey: ["existing-evm-balances", evmAddress],
|
|
18
|
-
queryFn: () => getWalletBalances(sdkClient, evmAddress ?? ""),
|
|
19
|
-
enabled: !!evmAddress,
|
|
20
|
-
refetchInterval: 3e4,
|
|
21
|
-
staleTime: 3e4,
|
|
22
|
-
retry: false
|
|
23
|
-
});
|
|
24
|
-
return {
|
|
25
|
-
data: useMemo(() => {
|
|
26
|
-
if (!accountsWithTokens) return;
|
|
27
|
-
const result = {};
|
|
28
|
-
if (!existingBalances) {
|
|
29
|
-
for (const [address, { tokens }] of Object.entries(accountsWithTokens)) result[address] = tokens;
|
|
30
|
-
return result;
|
|
31
|
-
}
|
|
32
|
-
const verifiedTokensSets = getVerifiedTokensSets(configTokens);
|
|
33
|
-
for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {
|
|
34
|
-
result[address] = {};
|
|
35
|
-
for (const [chainIdStr, chainTokens] of Object.entries(tokens)) {
|
|
36
|
-
const chainId = Number(chainIdStr);
|
|
37
|
-
const verifiedAddresses = verifiedTokensSets?.get(chainId);
|
|
38
|
-
const balances = existingBalances?.[chainId];
|
|
39
|
-
if (!balances?.length) {
|
|
40
|
-
if (chainTokens.length) result[address][chainId] = chainTokens;
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
const balanceSet = new Set(balances.map((balance) => balance.address.toLowerCase()));
|
|
44
|
-
const filteredTokens = chainTokens.filter((token) => {
|
|
45
|
-
const tokenKey = token.address.toLowerCase();
|
|
46
|
-
return balanceSet.has(tokenKey);
|
|
47
|
-
});
|
|
48
|
-
const chainTokenSet = new Set(chainTokens.map((token) => token.address.toLowerCase()));
|
|
49
|
-
const allowedAddressesConfig = getConfigItemSets(configTokens, (tokens) => new Set(tokens.filter((t) => Number(t.chainId) === chainId).map((t) => t.address.toLowerCase())), formType);
|
|
50
|
-
const additionalTokens = balances.filter((balance) => {
|
|
51
|
-
const balanceKey = balance.address.toLowerCase();
|
|
52
|
-
return !chainTokenSet.has(balanceKey) && isSupportedToken(balance) && isFormItemAllowed(balance, allowedAddressesConfig, formType, (t) => t.address.toLowerCase());
|
|
53
|
-
}).map((token) => ({
|
|
54
|
-
...token,
|
|
55
|
-
verified: verifiedAddresses?.has(token.address.toLowerCase()) ?? false
|
|
56
|
-
}));
|
|
57
|
-
const allTokens = [...filteredTokens, ...additionalTokens];
|
|
58
|
-
if (allTokens.length) result[address][chainId] = allTokens;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return result;
|
|
62
|
-
}, [
|
|
63
|
-
accountsWithTokens,
|
|
64
|
-
existingBalances,
|
|
65
|
-
configTokens,
|
|
66
|
-
formType
|
|
67
|
-
]),
|
|
68
|
-
isLoading
|
|
69
|
-
};
|
|
70
|
-
};
|
|
71
|
-
//#endregion
|
|
72
|
-
export { useFilteredTokensByBalance };
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=useFilteredByTokenBalances.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFilteredByTokenBalances.js","names":[],"sources":["../../../src/hooks/useFilteredByTokenBalances.ts"],"sourcesContent":["import {\n type BaseToken,\n ChainType,\n getWalletBalances,\n type TokenExtended,\n type WalletTokenExtended,\n} from '@lifi/sdk'\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 { getConfigItemSets, isFormItemAllowed } from '../utils/item.js'\nimport { getVerifiedTokensSets } from '../utils/token.js'\nimport { isSupportedToken } from '../utils/tokenList.js'\n\nexport const useFilteredTokensByBalance = (\n accountsWithTokens?: Record<\n string,\n { chainType: ChainType; tokens: Record<number, TokenExtended[]> }\n >,\n formType?: FormType\n): {\n data: Record<string, Record<number, TokenExtended[]>> | undefined\n isLoading: boolean\n} => {\n const { tokens: configTokens } = useWidgetConfig()\n const sdkClient = useSDKClient()\n\n const evmAddress = useMemo(() => {\n const evmAccount = Object.entries(accountsWithTokens ?? {}).find(\n ([_, { chainType }]) => chainType === ChainType.EVM\n )\n return evmAccount?.[0]\n }, [accountsWithTokens])\n\n const { data: existingBalances, isLoading } = useQuery({\n queryKey: ['existing-evm-balances', evmAddress],\n queryFn: () => getWalletBalances(sdkClient, evmAddress ?? ''),\n enabled: !!evmAddress,\n refetchInterval: 30_000, // 30 seconds\n staleTime: 30_000, // 30 seconds\n retry: false,\n })\n\n const accountsWithFilteredTokens = useMemo(() => {\n if (!accountsWithTokens) {\n return undefined\n }\n\n // Early return if no existing balances - return all tokens\n const result: Record<string, Record<number, TokenExtended[]>> = {}\n if (!existingBalances) {\n for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {\n result[address] = tokens\n }\n return result\n }\n\n const verifiedTokensSets = getVerifiedTokensSets(configTokens)\n\n for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {\n result[address] = {}\n\n for (const [chainIdStr, chainTokens] of Object.entries(tokens)) {\n const chainId = Number(chainIdStr)\n const verifiedAddresses = verifiedTokensSets?.get(chainId)\n // Get balances for this specific chain\n const balances = existingBalances?.[chainId]\n // If no balances, RPC all tokens of the chain\n if (!balances?.length) {\n if (chainTokens.length) {\n result[address][chainId] = chainTokens\n }\n continue\n }\n\n // Optimize token matching with Set for O(1) lookup\n const balanceSet = new Set(\n balances.map((balance: WalletTokenExtended) =>\n balance.address.toLowerCase()\n )\n )\n\n // Get tokens that are in chainTokens and have balances\n const filteredTokens = chainTokens.filter((token) => {\n const tokenKey = token.address.toLowerCase()\n return balanceSet.has(tokenKey)\n })\n\n // Get tokens that are in balances but not in chainTokens\n const chainTokenSet = new Set(\n chainTokens.map((token) => token.address.toLowerCase())\n )\n\n // Get allowed addresses from config tokens\n const allowedAddressesConfig = getConfigItemSets(\n configTokens,\n (tokens: BaseToken[]) =>\n new Set(\n tokens\n .filter((t) => Number(t.chainId) === chainId)\n .map((t) => t.address.toLowerCase())\n ),\n formType\n )\n\n const additionalTokens = balances\n .filter((balance: WalletTokenExtended) => {\n const balanceKey = balance.address.toLowerCase()\n return (\n !chainTokenSet.has(balanceKey) &&\n isSupportedToken(balance) &&\n isFormItemAllowed(\n balance,\n allowedAddressesConfig,\n formType,\n (t) => t.address.toLowerCase()\n )\n )\n })\n // Mark tokens from wallet balances as unverified unless allowlisted\n .map((token: WalletTokenExtended) => ({\n ...token,\n verified:\n verifiedAddresses?.has(token.address.toLowerCase()) ?? false,\n })) as TokenExtended[]\n\n // Combine both sets of tokens - convert WalletTokenExtended to TokenAmount\n const allTokens = [\n ...filteredTokens,\n ...additionalTokens,\n ] as TokenExtended[]\n\n if (allTokens.length) {\n result[address][chainId] = allTokens\n }\n }\n }\n\n return result\n }, [accountsWithTokens, existingBalances, configTokens, formType])\n\n return { data: accountsWithFilteredTokens, isLoading }\n}\n"],"mappings":";;;;;;;;;AAgBA,MAAa,8BACX,oBAIA,aAIG;CACH,MAAM,EAAE,QAAQ,iBAAiB,gBAAgB;CACjD,MAAM,YAAY,aAAa;CAE/B,MAAM,aAAa,cAAc;EAI/B,OAHmB,OAAO,QAAQ,sBAAsB,CAAC,CAAC,CAAC,CAAC,MACzD,CAAC,GAAG,EAAE,iBAAiB,cAAc,UAAU,GAElC,CAAC,GAAG;CACtB,GAAG,CAAC,kBAAkB,CAAC;CAEvB,MAAM,EAAE,MAAM,kBAAkB,cAAc,SAAS;EACrD,UAAU,CAAC,yBAAyB,UAAU;EAC9C,eAAe,kBAAkB,WAAW,cAAc,EAAE;EAC5D,SAAS,CAAC,CAAC;EACX,iBAAiB;EACjB,WAAW;EACX,OAAO;CACT,CAAC;CAoGD,OAAO;EAAE,MAlG0B,cAAc;GAC/C,IAAI,CAAC,oBACH;GAIF,MAAM,SAA0D,CAAC;GACjE,IAAI,CAAC,kBAAkB;IACrB,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,OAAO,QAAQ,kBAAkB,GACnE,OAAO,WAAW;IAEpB,OAAO;GACT;GAEA,MAAM,qBAAqB,sBAAsB,YAAY;GAE7D,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,OAAO,QAAQ,kBAAkB,GAAG;IACtE,OAAO,WAAW,CAAC;IAEnB,KAAK,MAAM,CAAC,YAAY,gBAAgB,OAAO,QAAQ,MAAM,GAAG;KAC9D,MAAM,UAAU,OAAO,UAAU;KACjC,MAAM,oBAAoB,oBAAoB,IAAI,OAAO;KAEzD,MAAM,WAAW,mBAAmB;KAEpC,IAAI,CAAC,UAAU,QAAQ;MACrB,IAAI,YAAY,QACd,OAAO,QAAQ,CAAC,WAAW;MAE7B;KACF;KAGA,MAAM,aAAa,IAAI,IACrB,SAAS,KAAK,YACZ,QAAQ,QAAQ,YAAY,CAC9B,CACF;KAGA,MAAM,iBAAiB,YAAY,QAAQ,UAAU;MACnD,MAAM,WAAW,MAAM,QAAQ,YAAY;MAC3C,OAAO,WAAW,IAAI,QAAQ;KAChC,CAAC;KAGD,MAAM,gBAAgB,IAAI,IACxB,YAAY,KAAK,UAAU,MAAM,QAAQ,YAAY,CAAC,CACxD;KAGA,MAAM,yBAAyB,kBAC7B,eACC,WACC,IAAI,IACF,OACG,QAAQ,MAAM,OAAO,EAAE,OAAO,MAAM,OAAO,CAAC,CAC5C,KAAK,MAAM,EAAE,QAAQ,YAAY,CAAC,CACvC,GACF,QACF;KAEA,MAAM,mBAAmB,SACtB,QAAQ,YAAiC;MACxC,MAAM,aAAa,QAAQ,QAAQ,YAAY;MAC/C,OACE,CAAC,cAAc,IAAI,UAAU,KAC7B,iBAAiB,OAAO,KACxB,kBACE,SACA,wBACA,WACC,MAAM,EAAE,QAAQ,YAAY,CAC/B;KAEJ,CAAC,CAAC,CAED,KAAK,WAAgC;MACpC,GAAG;MACH,UACE,mBAAmB,IAAI,MAAM,QAAQ,YAAY,CAAC,KAAK;KAC3D,EAAE;KAGJ,MAAM,YAAY,CAChB,GAAG,gBACH,GAAG,gBACL;KAEA,IAAI,UAAU,QACZ,OAAO,QAAQ,CAAC,WAAW;IAE/B;GACF;GAEA,OAAO;EACT,GAAG;GAAC;GAAoB;GAAkB;GAAc;EAAQ,CAExB;EAAG;CAAU;AACvD"}
|