@lifi/widget 3.29.1 → 3.30.1
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/CHANGELOG.md +24 -0
- package/dist/esm/AppProvider.d.ts +0 -1
- package/dist/esm/AppProvider.js +1 -1
- package/dist/esm/AppProvider.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInput.d.ts +0 -9
- package/dist/esm/components/AmountInput/AmountInput.js +1 -1
- package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInputAdornment.style.d.ts +0 -1
- package/dist/esm/components/AmountInput/AmountInputAdornment.style.js +1 -6
- package/dist/esm/components/AmountInput/AmountInputAdornment.style.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.d.ts +1 -1
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.js +3 -2
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
- package/dist/esm/components/AmountInput/PriceFormHelperText.d.ts +1 -7
- package/dist/esm/components/AmountInput/PriceFormHelperText.js +4 -3
- package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.d.ts +0 -4
- package/dist/esm/components/Avatar/Avatar.js +1 -1
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Avatar/TokenAvatar.d.ts +0 -15
- package/dist/esm/components/Avatar/TokenAvatar.js +2 -2
- package/dist/esm/components/Avatar/TokenAvatar.js.map +1 -1
- package/dist/esm/components/Card/CardButton.style.d.ts +0 -1
- package/dist/esm/components/Card/CardButton.style.js +0 -7
- package/dist/esm/components/Card/CardButton.style.js.map +1 -1
- package/dist/esm/components/ChainSelect/ChainSelect.js +35 -18
- package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
- package/dist/esm/components/ChainSelect/useChainSelect.d.ts +1 -1
- package/dist/esm/components/ChainSelect/useChainSelect.js +3 -3
- package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
- package/dist/esm/components/Chains/AllChainsAvatar.d.ts +7 -0
- package/dist/esm/components/Chains/AllChainsAvatar.js +77 -0
- package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -0
- package/dist/esm/components/Chains/ChainList.d.ts +2 -1
- package/dist/esm/components/Chains/ChainList.js +2 -2
- package/dist/esm/components/Chains/ChainList.js.map +1 -1
- package/dist/esm/components/Chains/ChainSearchInput.js +2 -2
- package/dist/esm/components/Chains/ChainSearchInput.js.map +1 -1
- package/dist/esm/components/Chains/SelectChainContent.js +1 -1
- package/dist/esm/components/Chains/SelectChainContent.js.map +1 -1
- package/dist/esm/components/Chains/VirtualizedChainList.d.ts +2 -1
- package/dist/esm/components/Chains/VirtualizedChainList.js +42 -10
- package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
- package/dist/esm/components/FeeBreakdownTooltip.d.ts +2 -3
- package/dist/esm/components/FeeBreakdownTooltip.js +1 -1
- package/dist/esm/components/FeeBreakdownTooltip.js.map +1 -1
- package/dist/esm/components/Header/Header.d.ts +1 -2
- package/dist/esm/components/Header/Header.js +1 -1
- package/dist/esm/components/Header/Header.js.map +1 -1
- package/dist/esm/components/Header/WalletHeader.d.ts +0 -1
- package/dist/esm/components/Header/WalletHeader.js +1 -1
- package/dist/esm/components/Header/WalletHeader.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardEssentials.js +1 -1
- package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
- package/dist/esm/components/StepActions/StepActions.d.ts +1 -10
- package/dist/esm/components/StepActions/StepActions.js +6 -6
- package/dist/esm/components/StepActions/StepActions.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.style.d.ts +0 -1
- package/dist/esm/components/Tabs/Tabs.style.js +1 -1
- package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
- package/dist/esm/components/Timer/TimerContent.js +1 -2
- package/dist/esm/components/Timer/TimerContent.js.map +1 -1
- package/dist/esm/components/Token/Token.d.ts +0 -2
- package/dist/esm/components/Token/Token.js +2 -2
- package/dist/esm/components/Token/Token.js.map +1 -1
- package/dist/esm/components/TokenList/TokenDetailsSheet.d.ts +1 -5
- package/dist/esm/components/TokenList/TokenDetailsSheet.js +4 -2
- package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
- package/dist/esm/components/TokenList/TokenDetailsSheetContent.js +2 -2
- package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
- package/dist/esm/components/TokenList/TokenList.js +11 -53
- package/dist/esm/components/TokenList/TokenList.js.map +1 -1
- package/dist/esm/components/TokenList/TokenListItem.d.ts +1 -4
- package/dist/esm/components/TokenList/TokenListItem.js +30 -26
- package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
- package/dist/esm/components/TokenList/VirtualizedTokenList.js +56 -37
- package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
- package/dist/esm/components/TokenList/types.d.ts +8 -11
- package/dist/esm/components/TokenList/useTokenSelect.d.ts +0 -4
- package/dist/esm/components/TokenList/useTokenSelect.js +3 -4
- package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
- package/dist/esm/components/TokenRate/TokenRate.js +1 -3
- package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
- package/dist/esm/components/TransactionDetails.js +2 -2
- package/dist/esm/components/TransactionDetails.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/hooks/timer/time.d.ts +0 -8
- package/dist/esm/hooks/timer/time.js.map +1 -1
- package/dist/esm/hooks/timer/useTimer.d.ts +3 -2
- package/dist/esm/hooks/useAccountsBalancesData.d.ts +6 -0
- package/dist/esm/hooks/useAccountsBalancesData.js +64 -0
- package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -0
- package/dist/esm/hooks/useAvailableChains.d.ts +2 -1
- package/dist/esm/hooks/useChain.d.ts +1 -1
- package/dist/esm/hooks/useChains.d.ts +1 -1
- package/dist/esm/hooks/useExplorer.d.ts +2 -1
- package/dist/esm/hooks/useFilteredByTokenBalances.d.ts +9 -0
- package/dist/esm/hooks/useFilteredByTokenBalances.js +78 -0
- package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -0
- package/dist/esm/hooks/useListHeight.d.ts +0 -3
- package/dist/esm/hooks/useListHeight.js +2 -3
- package/dist/esm/hooks/useListHeight.js.map +1 -1
- package/dist/esm/hooks/useRoutes.js +2 -2
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useToAddressAutoPopulate.d.ts +2 -1
- package/dist/esm/hooks/useToken.d.ts +2 -2
- package/dist/esm/hooks/useToken.js +13 -10
- package/dist/esm/hooks/useToken.js.map +1 -1
- package/dist/esm/hooks/useTokenAddressBalance.d.ts +3 -3
- package/dist/esm/hooks/useTokenAddressBalance.js +10 -14
- package/dist/esm/hooks/useTokenAddressBalance.js.map +1 -1
- package/dist/esm/hooks/useTokenBalances.d.ts +6 -9
- package/dist/esm/hooks/useTokenBalances.js +57 -72
- package/dist/esm/hooks/useTokenBalances.js.map +1 -1
- package/dist/esm/hooks/useTokenBalancesQueries.d.ts +11 -0
- package/dist/esm/hooks/useTokenBalancesQueries.js +74 -0
- package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -0
- package/dist/esm/hooks/useTokenSearch.js +3 -3
- package/dist/esm/hooks/useTokenSearch.js.map +1 -1
- package/dist/esm/hooks/useTokens.d.ts +6 -6
- package/dist/esm/hooks/useTokens.js +98 -69
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/i18n/bn.json +3 -3
- package/dist/esm/i18n/de.json +3 -3
- package/dist/esm/i18n/en.json +3 -3
- package/dist/esm/i18n/es.json +3 -3
- package/dist/esm/i18n/fr.json +3 -3
- package/dist/esm/i18n/hi.json +3 -3
- package/dist/esm/i18n/id.json +3 -3
- package/dist/esm/i18n/it.json +3 -3
- package/dist/esm/i18n/ja.json +3 -3
- package/dist/esm/i18n/ko.json +3 -3
- package/dist/esm/i18n/pl.json +3 -3
- package/dist/esm/i18n/pt.json +5 -5
- package/dist/esm/i18n/th.json +3 -3
- package/dist/esm/i18n/tr.json +3 -3
- package/dist/esm/i18n/uk.json +3 -3
- package/dist/esm/i18n/vi.json +3 -3
- package/dist/esm/i18n/zh.json +3 -3
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.js +6 -1
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.js.map +1 -1
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js +2 -4
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js +27 -17
- package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
- package/dist/esm/pages/TransactionPage/RouteTracker.d.ts +2 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.d.ts +0 -5
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +1 -1
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
- package/dist/esm/providers/I18nProvider/types.d.ts +4 -3
- package/dist/esm/providers/WalletProvider/EVMProvider.d.ts +0 -1
- package/dist/esm/providers/WalletProvider/EVMProvider.js +1 -1
- package/dist/esm/providers/WalletProvider/EVMProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SVMProvider.d.ts +0 -1
- package/dist/esm/providers/WalletProvider/SVMProvider.js +1 -1
- package/dist/esm/providers/WalletProvider/SVMProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SuiProvider.d.ts +0 -1
- package/dist/esm/providers/WalletProvider/SuiProvider.js +1 -1
- package/dist/esm/providers/WalletProvider/SuiProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/UTXOProvider.d.ts +0 -1
- package/dist/esm/providers/WalletProvider/UTXOProvider.js +1 -1
- package/dist/esm/providers/WalletProvider/UTXOProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.d.ts +0 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.js +1 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
- package/dist/esm/stores/bookmarks/BookmarkStore.d.ts +1 -2
- package/dist/esm/stores/bookmarks/BookmarkStore.js +1 -1
- package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
- package/dist/esm/stores/chains/ChainOrderStore.d.ts +0 -5
- package/dist/esm/stores/chains/ChainOrderStore.js +2 -2
- package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
- package/dist/esm/stores/chains/createChainOrderStore.d.ts +3 -2
- package/dist/esm/stores/chains/createChainOrderStore.js +13 -8
- package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
- package/dist/esm/stores/chains/types.d.ts +4 -1
- package/dist/esm/stores/chains/useChainOrder.js +5 -1
- package/dist/esm/stores/chains/useChainOrder.js.map +1 -1
- package/dist/esm/stores/header/types.d.ts +2 -1
- package/dist/esm/stores/header/useHeaderStore.d.ts +1 -4
- package/dist/esm/stores/header/useHeaderStore.js +3 -3
- package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
- package/dist/esm/stores/inputMode/useInputModeStore.d.ts +1 -1
- package/dist/esm/stores/routes/RouteExecutionStore.d.ts +2 -2
- package/dist/esm/stores/routes/RouteExecutionStore.js +1 -1
- package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
- package/dist/esm/stores/settings/types.d.ts +3 -3
- package/dist/esm/stores/settings/types.js.map +1 -1
- package/dist/esm/stores/settings/useSettingsStore.d.ts +1 -2
- package/dist/esm/stores/settings/useSettingsStore.js +1 -1
- package/dist/esm/stores/settings/useSettingsStore.js.map +1 -1
- package/dist/esm/stores/settings/useSplitSubvariantStore.d.ts +1 -4
- package/dist/esm/stores/settings/useSplitSubvariantStore.js +3 -3
- package/dist/esm/stores/settings/useSplitSubvariantStore.js.map +1 -1
- package/dist/esm/types/events.d.ts +0 -4
- package/dist/esm/types/events.js +0 -4
- package/dist/esm/types/events.js.map +1 -1
- package/dist/esm/types/token.d.ts +7 -2
- package/dist/esm/utils/chainType.d.ts +1 -0
- package/dist/esm/utils/chainType.js +2 -0
- package/dist/esm/utils/chainType.js.map +1 -1
- package/dist/esm/utils/fees.d.ts +1 -4
- package/dist/esm/utils/fees.js +3 -3
- package/dist/esm/utils/fees.js.map +1 -1
- package/dist/esm/utils/format.js +1 -1
- package/dist/esm/utils/format.js.map +1 -1
- package/dist/esm/utils/navigationRoutes.d.ts +2 -1
- package/dist/esm/utils/token.d.ts +8 -0
- package/dist/esm/utils/token.js +29 -0
- package/dist/esm/utils/token.js.map +1 -0
- package/dist/esm/utils/tokenList.d.ts +9 -0
- package/dist/esm/utils/tokenList.js +106 -0
- package/dist/esm/utils/tokenList.js.map +1 -0
- package/package.json +10 -10
- package/package.json.tmp +9 -9
- package/src/AppProvider.tsx +1 -1
- package/src/components/AmountInput/AmountInput.tsx +1 -1
- package/src/components/AmountInput/AmountInputAdornment.style.tsx +1 -7
- package/src/components/AmountInput/AmountInputEndAdornment.tsx +3 -2
- package/src/components/AmountInput/PriceFormHelperText.tsx +4 -3
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/Avatar/TokenAvatar.tsx +2 -2
- package/src/components/Card/CardButton.style.tsx +0 -8
- package/src/components/ChainSelect/ChainSelect.tsx +112 -40
- package/src/components/ChainSelect/useChainSelect.ts +3 -3
- package/src/components/Chains/AllChainsAvatar.tsx +113 -0
- package/src/components/Chains/ChainList.tsx +3 -0
- package/src/components/Chains/ChainSearchInput.tsx +2 -2
- package/src/components/Chains/SelectChainContent.tsx +1 -0
- package/src/components/Chains/VirtualizedChainList.tsx +80 -12
- package/src/components/FeeBreakdownTooltip.tsx +2 -5
- package/src/components/Header/Header.tsx +1 -1
- package/src/components/Header/WalletHeader.tsx +1 -1
- package/src/components/RouteCard/RouteCardEssentials.tsx +1 -1
- package/src/components/SendToWallet/SendToWalletButton.tsx +0 -1
- package/src/components/StepActions/StepActions.tsx +6 -6
- package/src/components/Tabs/Tabs.style.tsx +1 -1
- package/src/components/Timer/TimerContent.tsx +1 -2
- package/src/components/Token/Token.tsx +2 -2
- package/src/components/TokenList/TokenDetailsSheet.tsx +4 -9
- package/src/components/TokenList/TokenDetailsSheetContent.tsx +2 -6
- package/src/components/TokenList/TokenList.tsx +57 -129
- package/src/components/TokenList/TokenListItem.tsx +177 -154
- package/src/components/TokenList/VirtualizedTokenList.tsx +88 -48
- package/src/components/TokenList/types.ts +15 -11
- package/src/components/TokenList/useTokenSelect.ts +3 -9
- package/src/components/TokenRate/TokenRate.tsx +0 -1
- package/src/components/TransactionDetails.tsx +2 -3
- package/src/config/version.ts +1 -1
- package/src/hooks/timer/time.ts +0 -10
- package/src/hooks/timer/useTimer.ts +2 -2
- package/src/hooks/useAccountsBalancesData.ts +101 -0
- package/src/hooks/useAvailableChains.ts +1 -1
- package/src/hooks/useExplorer.ts +1 -1
- package/src/hooks/useFilteredByTokenBalances.ts +130 -0
- package/src/hooks/useListHeight.ts +2 -3
- package/src/hooks/useRoutes.ts +4 -2
- package/src/hooks/useToAddressAutoPopulate.ts +1 -1
- package/src/hooks/useToken.ts +31 -13
- package/src/hooks/useTokenAddressBalance.ts +15 -20
- package/src/hooks/useTokenBalances.ts +81 -80
- package/src/hooks/useTokenBalancesQueries.ts +94 -0
- package/src/hooks/useTokenSearch.ts +4 -7
- package/src/hooks/useTokens.ts +153 -87
- package/src/i18n/bn.json +3 -3
- package/src/i18n/de.json +3 -3
- package/src/i18n/en.json +3 -3
- package/src/i18n/es.json +3 -3
- package/src/i18n/fr.json +3 -3
- package/src/i18n/hi.json +3 -3
- package/src/i18n/id.json +3 -3
- package/src/i18n/it.json +3 -3
- package/src/i18n/ja.json +3 -3
- package/src/i18n/ko.json +3 -3
- package/src/i18n/pl.json +3 -3
- package/src/i18n/pt.json +5 -5
- package/src/i18n/th.json +3 -3
- package/src/i18n/tr.json +3 -3
- package/src/i18n/uk.json +3 -3
- package/src/i18n/vi.json +3 -3
- package/src/i18n/zh.json +3 -3
- package/src/pages/SelectTokenPage/SearchTokenInput.tsx +5 -0
- package/src/pages/SelectTokenPage/SelectTokenPage.tsx +7 -13
- package/src/pages/SettingsPage/SettingsCard/SettingCardExpandable.tsx +0 -1
- package/src/pages/SettingsPage/SlippageSettings/SlippageSettings.tsx +33 -30
- package/src/pages/TransactionPage/RouteTracker.tsx +1 -1
- package/src/pages/TransactionPage/StatusBottomSheet.tsx +5 -3
- package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +1 -1
- package/src/providers/I18nProvider/types.ts +3 -3
- package/src/providers/WalletProvider/EVMProvider.tsx +1 -1
- package/src/providers/WalletProvider/SVMProvider.tsx +1 -1
- package/src/providers/WalletProvider/SuiProvider.tsx +1 -1
- package/src/providers/WalletProvider/UTXOProvider.tsx +1 -1
- package/src/providers/WalletProvider/WalletProvider.tsx +1 -1
- package/src/stores/bookmarks/BookmarkStore.tsx +1 -1
- package/src/stores/chains/ChainOrderStore.tsx +3 -7
- package/src/stores/chains/createChainOrderStore.ts +17 -8
- package/src/stores/chains/types.ts +3 -1
- package/src/stores/chains/useChainOrder.ts +5 -1
- package/src/stores/header/types.ts +1 -1
- package/src/stores/header/useHeaderStore.tsx +3 -3
- package/src/stores/inputMode/useInputModeStore.ts +1 -1
- package/src/stores/routes/RouteExecutionStore.tsx +4 -3
- package/src/stores/settings/types.ts +2 -6
- package/src/stores/settings/useSettingsStore.ts +1 -1
- package/src/stores/settings/useSplitSubvariantStore.tsx +5 -4
- package/src/types/events.ts +0 -4
- package/src/types/token.ts +11 -2
- package/src/utils/chainType.ts +2 -0
- package/src/utils/fees.ts +3 -3
- package/src/utils/format.ts +2 -1
- package/src/utils/navigationRoutes.ts +1 -1
- package/src/utils/token.ts +67 -0
- package/src/utils/tokenList.ts +172 -0
- package/dist/esm/AppDrawer.style.d.ts +0 -1
- package/dist/esm/AppDrawer.style.js +0 -12
- package/dist/esm/AppDrawer.style.js.map +0 -1
- package/dist/esm/components/Select.d.ts +0 -3
- package/dist/esm/components/Select.js +0 -35
- package/dist/esm/components/Select.js.map +0 -1
- package/dist/esm/components/StepActions/StepFees.d.ts +0 -5
- package/dist/esm/components/StepActions/StepFees.js +0 -32
- package/dist/esm/components/StepActions/StepFees.js.map +0 -1
- package/dist/esm/components/TokenList/utils.d.ts +0 -2
- package/dist/esm/components/TokenList/utils.js +0 -35
- package/dist/esm/components/TokenList/utils.js.map +0 -1
- package/dist/esm/pages/MainPage/MainPage.style.d.ts +0 -1
- package/dist/esm/pages/MainPage/MainPage.style.js +0 -8
- package/dist/esm/pages/MainPage/MainPage.style.js.map +0 -1
- package/dist/esm/pages/SelectNativeTokenPage.d.ts +0 -2
- package/dist/esm/pages/SelectNativeTokenPage.js +0 -23
- package/dist/esm/pages/SelectNativeTokenPage.js.map +0 -1
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.style.d.ts +0 -1
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.style.js +0 -6
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.style.js.map +0 -1
- package/dist/esm/pages/SelectTokenPage/types.d.ts +0 -4
- package/dist/esm/pages/SelectTokenPage/types.js +0 -6
- package/dist/esm/pages/SelectTokenPage/types.js.map +0 -1
- package/dist/esm/providers/WidgetProvider/utils.d.ts +0 -5
- package/dist/esm/providers/WidgetProvider/utils.js +0 -17
- package/dist/esm/providers/WidgetProvider/utils.js.map +0 -1
- package/dist/esm/stores/form/useFieldController.d.ts +0 -11
- package/dist/esm/stores/form/useFieldController.js +0 -20
- package/dist/esm/stores/form/useFieldController.js.map +0 -1
- package/dist/esm/stores/form/useValidation.d.ts +0 -2
- package/dist/esm/stores/form/useValidation.js +0 -14
- package/dist/esm/stores/form/useValidation.js.map +0 -1
- package/dist/esm/stores/form/useValidationActions.d.ts +0 -2
- package/dist/esm/stores/form/useValidationActions.js +0 -10
- package/dist/esm/stores/form/useValidationActions.js.map +0 -1
- package/src/AppDrawer.style.tsx +0 -12
- package/src/components/Select.tsx +0 -42
- package/src/components/StepActions/StepFees.tsx +0 -49
- package/src/components/TokenList/utils.ts +0 -42
- package/src/pages/MainPage/MainPage.style.tsx +0 -8
- package/src/pages/SelectNativeTokenPage.tsx +0 -47
- package/src/pages/SelectTokenPage/SearchTokenInput.style.tsx +0 -6
- package/src/pages/SelectTokenPage/types.ts +0 -4
- package/src/providers/WidgetProvider/utils.ts +0 -26
- package/src/stores/form/useFieldController.ts +0 -31
- package/src/stores/form/useValidation.ts +0 -15
- package/src/stores/form/useValidationActions.ts +0 -12
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ExtendedChain } from '@lifi/sdk'
|
|
2
|
-
import type {
|
|
3
|
-
import type { MouseEventHandler, RefObject } from 'react'
|
|
2
|
+
import type { RefObject } from 'react'
|
|
4
3
|
import type { FormType } from '../../stores/form/types.js'
|
|
5
4
|
import type { TokenAmount } from '../../types/token.js'
|
|
6
5
|
|
|
@@ -12,28 +11,30 @@ export interface TokenListProps {
|
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
export interface VirtualizedTokenListProps {
|
|
15
|
-
account: Account
|
|
16
14
|
tokens: TokenAmount[]
|
|
17
15
|
scrollElementRef: RefObject<HTMLElement | null>
|
|
18
16
|
isLoading: boolean
|
|
19
17
|
isBalanceLoading: boolean
|
|
20
18
|
chainId?: number
|
|
21
|
-
chain?: ExtendedChain
|
|
22
19
|
showCategories?: boolean
|
|
23
20
|
onClick(tokenAddress: string, chainId?: number): void
|
|
24
21
|
selectedTokenAddress?: string
|
|
22
|
+
isAllNetworks: boolean
|
|
25
23
|
}
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
interface TokenListItemBaseProps {
|
|
28
26
|
onClick?(tokenAddress: string, chainId?: number): void
|
|
29
27
|
size: number
|
|
30
28
|
start: number
|
|
31
29
|
}
|
|
32
30
|
|
|
33
31
|
export interface TokenListItemProps extends TokenListItemBaseProps {
|
|
34
|
-
accountAddress?: string
|
|
35
32
|
token: TokenAmount
|
|
36
|
-
onShowTokenDetails: (
|
|
33
|
+
onShowTokenDetails: (
|
|
34
|
+
tokenAddress: string,
|
|
35
|
+
noContractAddress: boolean,
|
|
36
|
+
chainId: number
|
|
37
|
+
) => void
|
|
37
38
|
chain?: ExtendedChain
|
|
38
39
|
isBalanceLoading?: boolean
|
|
39
40
|
startAdornment?: React.ReactNode
|
|
@@ -42,9 +43,12 @@ export interface TokenListItemProps extends TokenListItemBaseProps {
|
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
export interface TokenListItemButtonProps {
|
|
45
|
-
onShowTokenDetails: (
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
onShowTokenDetails: (
|
|
47
|
+
tokenAddress: string,
|
|
48
|
+
noContractAddress: boolean,
|
|
49
|
+
chainId: number
|
|
50
|
+
) => void
|
|
51
|
+
onClick?(tokenAddress: string, chainId?: number): void
|
|
48
52
|
token: TokenAmount
|
|
49
53
|
chain?: ExtendedChain
|
|
50
54
|
isBalanceLoading?: boolean
|
|
@@ -57,6 +61,6 @@ export interface TokenListItemAvatarProps {
|
|
|
57
61
|
|
|
58
62
|
export interface TokenDetailsSheetBase {
|
|
59
63
|
isOpen(): void
|
|
60
|
-
open(address: string, noContractAddress: boolean): void
|
|
64
|
+
open(address: string, noContractAddress: boolean, chainId: number): void
|
|
61
65
|
close(): void
|
|
62
66
|
}
|
|
@@ -2,7 +2,7 @@ import { useCallback } from 'react'
|
|
|
2
2
|
import { useToAddressAutoPopulate } from '../../hooks/useToAddressAutoPopulate.js'
|
|
3
3
|
import { useWidgetEvents } from '../../hooks/useWidgetEvents.js'
|
|
4
4
|
import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'
|
|
5
|
-
import {
|
|
5
|
+
import { useChainOrderStore } from '../../stores/chains/ChainOrderStore.js'
|
|
6
6
|
import type { FormType } from '../../stores/form/types.js'
|
|
7
7
|
import { FormKeyHelper } from '../../stores/form/types.js'
|
|
8
8
|
import { useFieldActions } from '../../stores/form/useFieldActions.js'
|
|
@@ -10,18 +10,13 @@ import { useSplitSubvariantStore } from '../../stores/settings/useSplitSubvarian
|
|
|
10
10
|
import { WidgetEvent } from '../../types/events.js'
|
|
11
11
|
import type { DisabledUI } from '../../types/widget.js'
|
|
12
12
|
|
|
13
|
-
export type UseTokenSelectArgs = {
|
|
14
|
-
formType: FormType
|
|
15
|
-
onClick?: () => void
|
|
16
|
-
}
|
|
17
|
-
|
|
18
13
|
export const useTokenSelect = (formType: FormType, onClick?: () => void) => {
|
|
19
14
|
const { subvariant, disabledUI } = useWidgetConfig()
|
|
20
15
|
const splitSubvariant = useSplitSubvariantStore((store) => store.state)
|
|
21
16
|
const emitter = useWidgetEvents()
|
|
22
17
|
const { setFieldValue, getFieldValues } = useFieldActions()
|
|
23
18
|
const autoPopulateToAddress = useToAddressAutoPopulate()
|
|
24
|
-
const
|
|
19
|
+
const setChain = useChainOrderStore((state) => state.setChain)
|
|
25
20
|
|
|
26
21
|
const tokenKey = FormKeyHelper.getTokenKey(formType)
|
|
27
22
|
|
|
@@ -71,7 +66,6 @@ export const useTokenSelect = (formType: FormType, onClick?: () => void) => {
|
|
|
71
66
|
}
|
|
72
67
|
|
|
73
68
|
// If no opposite token is selected, synchronize the opposite chain to match the currently selected chain
|
|
74
|
-
const { setChain } = chainOrderStore.getState()
|
|
75
69
|
if (!selectedOppositeTokenAddress && selectedChainId) {
|
|
76
70
|
setFieldValue(
|
|
77
71
|
FormKeyHelper.getChainKey(oppositeFormType),
|
|
@@ -109,12 +103,12 @@ export const useTokenSelect = (formType: FormType, onClick?: () => void) => {
|
|
|
109
103
|
},
|
|
110
104
|
[
|
|
111
105
|
autoPopulateToAddress,
|
|
112
|
-
chainOrderStore,
|
|
113
106
|
disabledUI,
|
|
114
107
|
emitter,
|
|
115
108
|
formType,
|
|
116
109
|
getFieldValues,
|
|
117
110
|
onClick,
|
|
111
|
+
setChain,
|
|
118
112
|
setFieldValue,
|
|
119
113
|
subvariant,
|
|
120
114
|
splitSubvariant,
|
|
@@ -56,7 +56,6 @@ export const TokenRate: React.FC<TokenRateProps> = ({ route }) => {
|
|
|
56
56
|
: `1 ${toToken.symbol} ≈ ${t('format.tokenAmount', { value: toFromRate })} ${fromToken.symbol}`
|
|
57
57
|
|
|
58
58
|
return (
|
|
59
|
-
// biome-ignore lint/a11y/useSemanticElements: allowed in react
|
|
60
59
|
<TokenRateTypography onClick={toggleRate} role="button">
|
|
61
60
|
{rateText}
|
|
62
61
|
</TokenRateTypography>
|
|
@@ -102,7 +102,6 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
102
102
|
feeCosts={feeCosts}
|
|
103
103
|
relayerSupport={hasRelayerSupport}
|
|
104
104
|
>
|
|
105
|
-
{/** biome-ignore lint/a11y/useSemanticElements: allowed in react */}
|
|
106
105
|
<Box
|
|
107
106
|
onClick={toggleCard}
|
|
108
107
|
role="button"
|
|
@@ -125,7 +124,7 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
125
124
|
lineHeight: 1.429,
|
|
126
125
|
}}
|
|
127
126
|
>
|
|
128
|
-
{hasRelayerSupport
|
|
127
|
+
{hasRelayerSupport || !combinedFeesUSD
|
|
129
128
|
? t('main.fees.free')
|
|
130
129
|
: t('format.currency', { value: combinedFeesUSD })}
|
|
131
130
|
</Typography>
|
|
@@ -163,7 +162,7 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
163
162
|
variant="body2"
|
|
164
163
|
sx={{ fontWeight: 600, cursor: 'help' }}
|
|
165
164
|
>
|
|
166
|
-
{hasRelayerSupport
|
|
165
|
+
{hasRelayerSupport || !gasCostUSD
|
|
167
166
|
? t('main.fees.free')
|
|
168
167
|
: t('format.currency', {
|
|
169
168
|
value: gasCostUSD,
|
package/src/config/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/widget'
|
|
2
|
-
export const version = '3.
|
|
2
|
+
export const version = '3.30.1'
|
package/src/hooks/timer/time.ts
CHANGED
|
@@ -8,16 +8,6 @@ export type TimeFromMillisecondsType = {
|
|
|
8
8
|
days: number
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export type AMPMType = '' | 'pm' | 'am'
|
|
12
|
-
|
|
13
|
-
export type FormattedTimeFromMillisecondsType = {
|
|
14
|
-
milliseconds: number
|
|
15
|
-
seconds: number
|
|
16
|
-
minutes: number
|
|
17
|
-
hours: number
|
|
18
|
-
ampm?: AMPMType
|
|
19
|
-
}
|
|
20
|
-
|
|
21
11
|
export function getTimeFromMilliseconds(
|
|
22
12
|
millisecs: number,
|
|
23
13
|
isCountDown = true
|
|
@@ -9,14 +9,14 @@ import { validateExpiryTimestamp, validateOnExpire } from './validate.js'
|
|
|
9
9
|
|
|
10
10
|
const SECOND_INTERVAL = 1000
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
type useTimerSettingsType = {
|
|
13
13
|
expiryTimestamp: Date
|
|
14
14
|
onExpire?: () => void
|
|
15
15
|
autoStart?: boolean
|
|
16
16
|
interval?: number
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
type useTimerResultType = TimeFromMillisecondsType & {
|
|
20
20
|
start: () => void
|
|
21
21
|
pause: () => void
|
|
22
22
|
resume: () => void
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { ChainType, TokenExtended } from '@lifi/sdk'
|
|
2
|
+
import { useAccount } from '@lifi/wallet-management'
|
|
3
|
+
import { useMemo } from 'react'
|
|
4
|
+
import type { FormType } from '../stores/form/types.js'
|
|
5
|
+
import { useChains } from './useChains.js'
|
|
6
|
+
import { useFilteredTokensByBalance } from './useFilteredByTokenBalances.js'
|
|
7
|
+
|
|
8
|
+
export const useAccountsBalancesData = (
|
|
9
|
+
selectedChainId?: number,
|
|
10
|
+
formType?: FormType,
|
|
11
|
+
isAllNetworks?: boolean,
|
|
12
|
+
allTokens?: Record<number, TokenExtended[]>
|
|
13
|
+
) => {
|
|
14
|
+
const { data: accountsWithTokens, isLoading: isAccountsLoading } =
|
|
15
|
+
useAccountsData(selectedChainId, formType, isAllNetworks, allTokens)
|
|
16
|
+
|
|
17
|
+
// Filter out EVM tokens that do not have balances
|
|
18
|
+
const { data: filteredTokens, isLoading: isCachedBalancesLoading } =
|
|
19
|
+
useFilteredTokensByBalance(accountsWithTokens, formType)
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
data: filteredTokens,
|
|
23
|
+
isLoading: isAccountsLoading || isCachedBalancesLoading,
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const useAccountsData = (
|
|
28
|
+
selectedChainId?: number,
|
|
29
|
+
formType?: FormType,
|
|
30
|
+
isAllNetworks?: boolean,
|
|
31
|
+
allTokens?: Record<number, TokenExtended[]>
|
|
32
|
+
) => {
|
|
33
|
+
const {
|
|
34
|
+
chains: allChains,
|
|
35
|
+
isLoading: isChainsLoading,
|
|
36
|
+
getChainById,
|
|
37
|
+
} = useChains(formType)
|
|
38
|
+
const currentChain = useMemo(() => {
|
|
39
|
+
return selectedChainId
|
|
40
|
+
? getChainById(selectedChainId, allChains)
|
|
41
|
+
: undefined
|
|
42
|
+
}, [selectedChainId, allChains, getChainById])
|
|
43
|
+
const chains = useMemo(() => {
|
|
44
|
+
return isAllNetworks ? allChains : currentChain ? [currentChain] : undefined
|
|
45
|
+
}, [allChains, isAllNetworks, currentChain])
|
|
46
|
+
|
|
47
|
+
const { accounts: allAccounts, account: currentAccount } = useAccount(
|
|
48
|
+
isAllNetworks ? undefined : { chainType: currentChain?.chainType }
|
|
49
|
+
)
|
|
50
|
+
const accounts = useMemo(() => {
|
|
51
|
+
return isAllNetworks
|
|
52
|
+
? allAccounts
|
|
53
|
+
: currentAccount
|
|
54
|
+
? [currentAccount]
|
|
55
|
+
: undefined
|
|
56
|
+
}, [allAccounts, currentAccount, isAllNetworks])
|
|
57
|
+
|
|
58
|
+
const accountsWithTokens = useMemo(() => {
|
|
59
|
+
if (!chains || !allTokens || !accounts?.length) {
|
|
60
|
+
return undefined
|
|
61
|
+
}
|
|
62
|
+
return accounts
|
|
63
|
+
?.filter((account) => account.address)
|
|
64
|
+
.reduce(
|
|
65
|
+
(acc, account) => {
|
|
66
|
+
if (account.address) {
|
|
67
|
+
const accountChains = chains?.filter(
|
|
68
|
+
(chain) => account.chainType === chain?.chainType
|
|
69
|
+
)
|
|
70
|
+
if (accountChains) {
|
|
71
|
+
const chainIdSet = new Set(accountChains.map((chain) => chain.id))
|
|
72
|
+
const filteredTokens = Object.entries(allTokens).reduce(
|
|
73
|
+
(tokenAcc, [chainIdStr, tokens]) => {
|
|
74
|
+
const chainId = Number(chainIdStr)
|
|
75
|
+
if (chainIdSet.has(chainId)) {
|
|
76
|
+
tokenAcc[chainId] = tokens
|
|
77
|
+
}
|
|
78
|
+
return tokenAcc
|
|
79
|
+
},
|
|
80
|
+
{} as { [chainId: number]: TokenExtended[] }
|
|
81
|
+
)
|
|
82
|
+
acc[account.address] = {
|
|
83
|
+
chainType: account.chainType,
|
|
84
|
+
tokens: filteredTokens,
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return acc
|
|
89
|
+
},
|
|
90
|
+
{} as Record<
|
|
91
|
+
string,
|
|
92
|
+
{ chainType: ChainType; tokens: Record<number, TokenExtended[]> }
|
|
93
|
+
>
|
|
94
|
+
)
|
|
95
|
+
}, [accounts, chains, allTokens])
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
data: accountsWithTokens,
|
|
99
|
+
isLoading: isChainsLoading,
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -6,7 +6,7 @@ import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
|
6
6
|
import { getConfigItemSets, isItemAllowedForSets } from '../utils/item.js'
|
|
7
7
|
import { getQueryKey } from '../utils/queries.js'
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
type GetChainById = (
|
|
10
10
|
chainId?: number,
|
|
11
11
|
chains?: ExtendedChain[]
|
|
12
12
|
) => ExtendedChain | undefined
|
package/src/hooks/useExplorer.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
|
7
7
|
|
|
8
8
|
const sanitiseBaseUrl = (baseUrl: string) => baseUrl.trim().replace(/\/+$/, '')
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
type TransactionLinkProps = { chain?: Chain | number } & (
|
|
11
11
|
| {
|
|
12
12
|
txHash: string
|
|
13
13
|
txLink?: never
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type BaseToken,
|
|
3
|
+
ChainType,
|
|
4
|
+
getWalletBalances,
|
|
5
|
+
type TokenExtended,
|
|
6
|
+
type WalletTokenExtended,
|
|
7
|
+
} from '@lifi/sdk'
|
|
8
|
+
import { useQuery } from '@tanstack/react-query'
|
|
9
|
+
import { useMemo } from 'react'
|
|
10
|
+
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
11
|
+
import type { FormType } from '../stores/form/types.js'
|
|
12
|
+
import { getConfigItemSets, isFormItemAllowed } from '../utils/item.js'
|
|
13
|
+
import { isSupportedToken } from '../utils/tokenList.js'
|
|
14
|
+
|
|
15
|
+
export const useFilteredTokensByBalance = (
|
|
16
|
+
accountsWithTokens?: Record<
|
|
17
|
+
string,
|
|
18
|
+
{ chainType: ChainType; tokens: Record<number, TokenExtended[]> }
|
|
19
|
+
>,
|
|
20
|
+
formType?: FormType
|
|
21
|
+
) => {
|
|
22
|
+
const { tokens: configTokens } = useWidgetConfig()
|
|
23
|
+
|
|
24
|
+
const evmAddress = useMemo(() => {
|
|
25
|
+
const evmAccount = Object.entries(accountsWithTokens ?? {}).find(
|
|
26
|
+
([_, { chainType }]) => chainType === ChainType.EVM
|
|
27
|
+
)
|
|
28
|
+
return evmAccount?.[0]
|
|
29
|
+
}, [accountsWithTokens])
|
|
30
|
+
|
|
31
|
+
const { data: existingBalances, isLoading } = useQuery({
|
|
32
|
+
queryKey: ['existing-evm-balances', evmAddress],
|
|
33
|
+
queryFn: () => getWalletBalances(evmAddress ?? ''),
|
|
34
|
+
enabled: !!evmAddress,
|
|
35
|
+
refetchInterval: 30_000, // 30 seconds
|
|
36
|
+
staleTime: 30_000, // 30 seconds
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
const accountsWithFilteredTokens = useMemo(() => {
|
|
40
|
+
if (!accountsWithTokens) {
|
|
41
|
+
return undefined
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Early return if no existing balances - return all tokens
|
|
45
|
+
const result: Record<string, Record<number, TokenExtended[]>> = {}
|
|
46
|
+
if (!existingBalances) {
|
|
47
|
+
for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {
|
|
48
|
+
result[address] = tokens
|
|
49
|
+
}
|
|
50
|
+
return result
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {
|
|
54
|
+
result[address] = {}
|
|
55
|
+
|
|
56
|
+
for (const [chainIdStr, chainTokens] of Object.entries(tokens)) {
|
|
57
|
+
const chainId = Number(chainIdStr)
|
|
58
|
+
// Get balances for this specific chain
|
|
59
|
+
const balances = existingBalances?.[chainId]
|
|
60
|
+
// If no balances, RPC all tokens of the chain
|
|
61
|
+
if (!balances?.length) {
|
|
62
|
+
if (chainTokens.length) {
|
|
63
|
+
result[address][chainId] = chainTokens
|
|
64
|
+
}
|
|
65
|
+
continue
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Optimize token matching with Set for O(1) lookup
|
|
69
|
+
const balanceSet = new Set(
|
|
70
|
+
balances.map((balance: WalletTokenExtended) =>
|
|
71
|
+
balance.address.toLowerCase()
|
|
72
|
+
)
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
// Get tokens that are in chainTokens and have balances
|
|
76
|
+
const filteredTokens = chainTokens.filter((token) => {
|
|
77
|
+
const tokenKey = token.address.toLowerCase()
|
|
78
|
+
return balanceSet.has(tokenKey)
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
// Get tokens that are in balances but not in chainTokens
|
|
82
|
+
const chainTokenSet = new Set(
|
|
83
|
+
chainTokens.map((token) => token.address.toLowerCase())
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
// Get allowed addresses from config tokens
|
|
87
|
+
const allowedAddressesConfig = getConfigItemSets(
|
|
88
|
+
configTokens,
|
|
89
|
+
(tokens: BaseToken[]) =>
|
|
90
|
+
new Set(
|
|
91
|
+
tokens
|
|
92
|
+
.filter((t) => Number(t.chainId) === chainId)
|
|
93
|
+
.map((t) => t.address.toLowerCase())
|
|
94
|
+
),
|
|
95
|
+
formType
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
const additionalTokens = balances.filter(
|
|
99
|
+
(balance: WalletTokenExtended) => {
|
|
100
|
+
const balanceKey = balance.address.toLowerCase()
|
|
101
|
+
return (
|
|
102
|
+
!chainTokenSet.has(balanceKey) &&
|
|
103
|
+
isSupportedToken(balance) &&
|
|
104
|
+
isFormItemAllowed(
|
|
105
|
+
balance,
|
|
106
|
+
allowedAddressesConfig,
|
|
107
|
+
formType,
|
|
108
|
+
(t) => t.address.toLowerCase()
|
|
109
|
+
)
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
) as TokenExtended[]
|
|
113
|
+
|
|
114
|
+
// Combine both sets of tokens - convert WalletTokenExtended to TokenAmount
|
|
115
|
+
const allTokens = [
|
|
116
|
+
...filteredTokens,
|
|
117
|
+
...additionalTokens,
|
|
118
|
+
] as TokenExtended[]
|
|
119
|
+
|
|
120
|
+
if (allTokens.length) {
|
|
121
|
+
result[address][chainId] = allTokens
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return result
|
|
127
|
+
}, [accountsWithTokens, existingBalances, configTokens, formType])
|
|
128
|
+
|
|
129
|
+
return { data: accountsWithFilteredTokens, isLoading }
|
|
130
|
+
}
|
|
@@ -51,8 +51,8 @@ interface UseContentHeightProps {
|
|
|
51
51
|
headerRef?: RefObject<HTMLElement | null>
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
const defaultMinListHeight = 360
|
|
55
|
+
const minMobileListHeight = 160
|
|
56
56
|
|
|
57
57
|
// NOTE: this hook is implicitly tied to the widget height functionality in the
|
|
58
58
|
// AppExpandedContainer, RelativeContainer and CssBaselineContainer components as defined in AppContainer.ts
|
|
@@ -102,7 +102,6 @@ export const useListHeight = ({
|
|
|
102
102
|
)
|
|
103
103
|
|
|
104
104
|
return {
|
|
105
|
-
minListHeight,
|
|
106
105
|
listHeight,
|
|
107
106
|
}
|
|
108
107
|
}
|
package/src/hooks/useRoutes.ts
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
getContractCallsQuote,
|
|
6
6
|
getRelayerQuote,
|
|
7
7
|
getRoutes,
|
|
8
|
+
isGaslessStep,
|
|
8
9
|
isRelayerStep,
|
|
9
10
|
LiFiErrorCode,
|
|
10
11
|
} from '@lifi/sdk'
|
|
@@ -331,8 +332,9 @@ export const useRoutes = ({ observableRoute }: RoutesProps = {}) => {
|
|
|
331
332
|
return
|
|
332
333
|
}
|
|
333
334
|
|
|
334
|
-
const isObservableRelayerRoute =
|
|
335
|
-
|
|
335
|
+
const isObservableRelayerRoute = observableRoute?.steps?.some(
|
|
336
|
+
(step) => isRelayerStep(step) && isGaslessStep(step, fromChain)
|
|
337
|
+
)
|
|
336
338
|
|
|
337
339
|
const shouldUseMainRoutes =
|
|
338
340
|
!observableRoute || !isObservableRelayerRoute
|
|
@@ -7,7 +7,7 @@ import { useSendToWalletActions } from '../stores/settings/useSendToWalletStore.
|
|
|
7
7
|
import { getChainTypeFromAddress } from '../utils/chainType.js'
|
|
8
8
|
import { useAvailableChains } from './useAvailableChains.js'
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
type UpdateToAddressArgs = {
|
|
11
11
|
formType: FormType
|
|
12
12
|
selectedToAddress?: string
|
|
13
13
|
selectedChainId?: number
|
package/src/hooks/useToken.ts
CHANGED
|
@@ -2,22 +2,40 @@ import { useMemo } from 'react'
|
|
|
2
2
|
import { useTokenSearch } from './useTokenSearch.js'
|
|
3
3
|
import { useTokens } from './useTokens.js'
|
|
4
4
|
|
|
5
|
-
export const useToken = (
|
|
6
|
-
|
|
5
|
+
export const useToken = (
|
|
6
|
+
chainId?: number,
|
|
7
|
+
tokenAddress?: string,
|
|
8
|
+
latest?: boolean
|
|
9
|
+
) => {
|
|
10
|
+
const { allTokens, isLoading: isTokensLoading } = useTokens()
|
|
7
11
|
|
|
8
|
-
const token = useMemo(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const token = useMemo(
|
|
13
|
+
() =>
|
|
14
|
+
chainId && tokenAddress
|
|
15
|
+
? allTokens?.[chainId]?.find(
|
|
16
|
+
(t) => t.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
17
|
+
)
|
|
18
|
+
: undefined,
|
|
19
|
+
[allTokens, chainId, tokenAddress]
|
|
20
|
+
)
|
|
14
21
|
|
|
15
|
-
const tokenSearchEnabled =
|
|
16
|
-
|
|
17
|
-
|
|
22
|
+
const tokenSearchEnabled =
|
|
23
|
+
!!chainId && !!tokenAddress && (latest || (!isTokensLoading && !token))
|
|
24
|
+
|
|
25
|
+
const { token: searchedToken, isLoading: isSearchLoading } = useTokenSearch(
|
|
26
|
+
chainId,
|
|
27
|
+
tokenAddress,
|
|
28
|
+
tokenSearchEnabled
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
const resolvedToken = latest
|
|
32
|
+
? (searchedToken ?? token)
|
|
33
|
+
: (token ?? searchedToken)
|
|
18
34
|
|
|
19
35
|
return {
|
|
20
|
-
token:
|
|
21
|
-
isLoading:
|
|
36
|
+
token: resolvedToken,
|
|
37
|
+
isLoading:
|
|
38
|
+
!resolvedToken &&
|
|
39
|
+
(isTokensLoading || (tokenSearchEnabled && isSearchLoading)),
|
|
22
40
|
}
|
|
23
41
|
}
|
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import type { TokenAmount } from '@lifi/sdk'
|
|
2
|
+
import { useAccount } from '@lifi/wallet-management'
|
|
3
|
+
import { useChain } from './useChain.js'
|
|
4
|
+
import { useToken } from './useToken.js'
|
|
5
|
+
import { useTokenBalance } from './useTokenBalance.js'
|
|
4
6
|
|
|
5
7
|
export const useTokenAddressBalance = (
|
|
6
8
|
chainId?: number,
|
|
7
9
|
tokenAddress?: string
|
|
8
10
|
) => {
|
|
9
|
-
const {
|
|
10
|
-
|
|
11
|
+
const { chain, isLoading: isChainLoading } = useChain(chainId)
|
|
12
|
+
const { account } = useAccount({ chainType: chain?.chainType })
|
|
13
|
+
const { token, isLoading: isTokenLoading } = useToken(chainId, tokenAddress)
|
|
11
14
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (!token) {
|
|
18
|
-
token = tokens?.find(
|
|
19
|
-
(token) => token.address === tokenAddress && token.chainId === chainId
|
|
20
|
-
)
|
|
21
|
-
}
|
|
22
|
-
return token as TokenAmount
|
|
23
|
-
}
|
|
24
|
-
}, [chainId, tokenAddress, tokens, tokensWithBalance])
|
|
15
|
+
const {
|
|
16
|
+
token: tokenBalance,
|
|
17
|
+
isLoading: isBalanceLoading,
|
|
18
|
+
refetch,
|
|
19
|
+
} = useTokenBalance(account?.address, token)
|
|
25
20
|
|
|
26
21
|
return {
|
|
27
|
-
token,
|
|
22
|
+
token: tokenBalance ?? (token as TokenAmount),
|
|
28
23
|
chain,
|
|
29
|
-
isLoading: isBalanceLoading,
|
|
24
|
+
isLoading: isBalanceLoading || isChainLoading || isTokenLoading,
|
|
30
25
|
refetch,
|
|
31
26
|
}
|
|
32
27
|
}
|