@layerswap/widget 1.0.6 → 1.1.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/dist/esm/Models/LayerSwapSettings.js +0 -1
- package/dist/esm/Models/Theme.js +39 -0
- package/dist/esm/components/Buttons/submitButton.js +2 -1
- package/dist/esm/components/Common/ConnectWalletButton.js +9 -3
- package/dist/esm/components/Common/CountDownTimer.js +0 -1
- package/dist/esm/components/Common/WarningMessage.js +4 -2
- package/dist/esm/components/Common/guideLink.js +4 -6
- package/dist/esm/components/ErrorFallback.js +12 -12
- package/dist/esm/components/HeaderWithMenu.js +1 -1
- package/dist/esm/components/Icons/CircularLoader.js +5 -0
- package/dist/esm/components/Icons/FailIcon.js +2 -2
- package/dist/esm/components/Icons/GlobeIcon.js +3 -0
- package/dist/esm/components/Icons/MenuIcon.js +5 -0
- package/dist/esm/components/Icons/TokenIcon.js +1 -1
- package/dist/esm/components/Icons/Wallets/index.js +0 -1
- package/dist/esm/components/Input/Address/AddressNote.js +2 -2
- package/dist/esm/components/Input/Address/AddressPicker/AddressWithIcon.js +5 -2
- package/dist/esm/components/Input/Address/AddressPicker/index.js +15 -12
- package/dist/esm/components/Input/Address/ContractAddressNote.js +17 -0
- package/dist/esm/components/Input/Address/UrlAddressNote.js +10 -0
- package/dist/esm/components/Input/Amount/Balance.js +1 -1
- package/dist/esm/components/Input/Amount/ExchangeReceiveAmount.js +8 -0
- package/dist/esm/components/Input/Amount/MinMax.js +1 -1
- package/dist/esm/components/Input/Amount/PriceImpact.js +5 -40
- package/dist/esm/components/Input/Amount/ReceiveAmount.js +2 -2
- package/dist/esm/components/Input/Amount/index.js +3 -3
- package/dist/esm/components/Input/DestinationPicker.js +2 -2
- package/dist/esm/components/Input/RoutePicker/Content.js +19 -3
- package/dist/esm/components/Input/RoutePicker/RouteTokenSwitch.js +4 -4
- package/dist/esm/components/Input/RoutePicker/RouterPickerWalletConnect.js +5 -5
- package/dist/esm/components/Input/RoutePicker/Routes.js +27 -26
- package/dist/esm/components/Input/RoutePicker/Rows/CollapsableHeader.js +2 -2
- package/dist/esm/components/Input/RoutePicker/Rows/CollapsibleRow.js +3 -3
- package/dist/esm/components/Input/RoutePicker/Rows/StickyHeader.js +2 -2
- package/dist/esm/components/Input/RoutePicker/Rows/SuggestionsHeader.js +55 -0
- package/dist/esm/components/Input/RoutePicker/Rows/TitleRow.js +11 -0
- package/dist/esm/components/Input/RoutePicker/Rows/index.js +5 -6
- package/dist/esm/components/Input/RoutePicker/TokenTitleDetails.js +10 -0
- package/dist/esm/components/Input/RoutePicker/index.js +2 -2
- package/dist/esm/components/Input/SourceWalletPicker.js +6 -4
- package/dist/esm/components/Menu/MenuList.js +11 -19
- package/dist/esm/components/Menu/index.js +16 -7
- package/dist/esm/components/Modal/modalWithoutAnimation.js +3 -3
- package/dist/esm/components/Pages/Campaigns/Details/Leaderboard.js +2 -2
- package/dist/esm/components/Pages/Campaigns/Details/Rewards.js +2 -2
- package/dist/esm/components/Pages/Campaigns/Details/index.js +3 -4
- package/dist/esm/components/Pages/Campaigns/index.js +3 -4
- package/dist/esm/components/Pages/Swap/Form/ExchangeForm.js +21 -19
- package/dist/esm/components/Pages/Swap/Form/FeeDetails/Rate.js +6 -4
- package/dist/esm/components/Pages/Swap/Form/FeeDetails/Refuel.js +8 -3
- package/dist/esm/components/Pages/Swap/Form/FeeDetails/SwapQuote/DetailedEstimates.js +51 -14
- package/dist/esm/components/Pages/Swap/Form/FeeDetails/SwapQuote/SummaryRow.js +1 -1
- package/dist/esm/components/Pages/Swap/Form/FeeDetails/SwapQuote/index.js +3 -3
- package/dist/esm/components/Pages/Swap/Form/FeeDetails/index.js +10 -11
- package/dist/esm/components/Pages/Swap/Form/Form.js +27 -3
- package/dist/esm/components/Pages/Swap/Form/FormWrapper.js +35 -10
- package/dist/esm/components/Pages/Swap/Form/NetworkForm.js +13 -22
- package/dist/esm/components/Pages/Swap/Form/SecondaryComponents/FormButton.js +1 -1
- package/dist/esm/components/Pages/Swap/Form/SecondaryComponents/ReserveGasNote.js +8 -6
- package/dist/esm/components/Pages/Swap/Form/SecondaryComponents/validationError/ContractAddressValidationCache.js +19 -0
- package/dist/esm/components/Pages/Swap/Withdraw/Failed.js +12 -8
- package/dist/esm/components/Pages/Swap/Withdraw/ManualWithdraw.js +28 -9
- package/dist/esm/components/Pages/Swap/Withdraw/NotFound.js +15 -4
- package/dist/esm/components/Pages/Swap/Withdraw/Processing/Processing.js +44 -45
- package/dist/esm/components/Pages/Swap/Withdraw/Summary/Summary.js +2 -3
- package/dist/esm/components/Pages/Swap/Withdraw/Summary/index.js +2 -2
- package/dist/esm/components/Pages/Swap/Withdraw/SwapDetails.js +9 -7
- package/dist/esm/components/Pages/Swap/Withdraw/Wallet/Common/actionMessage.js +43 -0
- package/dist/esm/components/Pages/Swap/Withdraw/Wallet/Common/buttons.js +125 -71
- package/dist/esm/components/Pages/Swap/Withdraw/Wallet/index.js +56 -65
- package/dist/esm/components/Pages/Swap/Withdraw/WalletTransferButton.js +2 -2
- package/dist/esm/components/Pages/Swap/Withdraw/WalletTransferContent.js +2 -2
- package/dist/esm/components/Pages/Swap/Withdraw/Withdraw.js +3 -3
- package/dist/esm/components/Pages/Swap/Withdraw/index.js +5 -4
- package/dist/esm/components/Pages/Swap/Withdraw/messages/Message.js +4 -4
- package/dist/esm/components/Pages/Swap/Withdraw/messages/TransactionMessages.js +14 -15
- package/dist/esm/components/Pages/SwapHistory/History.js +2 -2
- package/dist/esm/components/Pages/SwapHistory/HistorySummary.js +1 -1
- package/dist/esm/components/Pages/SwapHistory/index.js +4 -4
- package/dist/esm/components/Select/Selector/SelectItem.js +1 -1
- package/dist/esm/components/Wallet/WalletComponents/ConnectedWallets.js +4 -4
- package/dist/esm/components/Wallet/WalletComponents/WalletsList.js +1 -1
- package/dist/esm/components/Wallet/WalletModal/Connector.js +2 -2
- package/dist/esm/components/Wallet/WalletModal/ConnectorsList.js +78 -125
- package/dist/esm/components/Wallet/WalletModal/InstalledExtensionNotFound.js +16 -0
- package/dist/esm/components/Wallet/WalletModal/LoadingConnect.js +27 -0
- package/dist/esm/components/Wallet/WalletModal/MultichainConnectorPicker.js +23 -0
- package/dist/esm/components/Wallet/WalletModal/ProviderPicker.js +26 -0
- package/dist/esm/components/Wallet/WalletModal/WalletQrCode.js +18 -0
- package/dist/esm/components/Wallet/WalletModal/index.js +4 -2
- package/dist/esm/components/Wallet/WalletProviders/index.js +4 -2
- package/dist/esm/components/Widget/Content.js +2 -2
- package/dist/esm/components/Widget/Footer.js +21 -21
- package/dist/esm/components/Widget/Index.js +2 -2
- package/dist/esm/components/WidgetLoading.js +9 -2
- package/dist/esm/components/shadcn/checkbox.js +1 -1
- package/dist/esm/context/ErrorProvider.js +14 -0
- package/dist/esm/context/LayerswapProvider.js +6 -5
- package/dist/esm/context/callbackProvider.js +60 -52
- package/dist/esm/context/resolverContext.js +11 -2
- package/dist/esm/context/swap.js +10 -13
- package/dist/esm/context/{balanceAccounts.js → swapAccounts.js} +17 -17
- package/dist/esm/context/validationContext.js +1 -1
- package/dist/esm/context/walletProviders.js +7 -1
- package/dist/esm/context/withdrawalContext.js +2 -2
- package/dist/esm/exports/internal.js +4 -3
- package/dist/esm/helpers/filterSourceNetworks.js +23 -0
- package/dist/esm/helpers/getSettings/getSettings.js +18 -13
- package/dist/esm/helpers/routes.js +4 -1
- package/dist/esm/hooks/useAllWithdrawalBalances.js +11 -5
- package/dist/esm/hooks/useConnectors.js +72 -0
- package/dist/esm/hooks/useFormRoutes.js +16 -8
- package/dist/esm/hooks/useFormValidation.js +5 -4
- package/dist/esm/hooks/useRouteValidation.js +1 -1
- package/dist/esm/hooks/useSwrSwaps.js +1 -1
- package/dist/esm/hooks/useTransfer.js +9 -0
- package/dist/esm/hooks/useWallet.js +7 -7
- package/dist/esm/lib/AppSettings.js +27 -16
- package/dist/esm/lib/ErrorHandler.js +6 -0
- package/dist/esm/lib/address/contractAddressResolver.js +12 -0
- package/dist/esm/lib/apiClients/layerSwapApiClient.js +19 -35
- package/dist/esm/lib/balances/balanceResolver.js +57 -11
- package/dist/esm/lib/balances/errorUtils.js +13 -0
- package/dist/esm/lib/balances/nodeErrorClassifier.js +22 -0
- package/dist/esm/lib/fees.js +50 -0
- package/dist/esm/lib/generateSwapInitialValues.js +2 -2
- package/dist/esm/lib/isNewListed.js +8 -0
- package/dist/esm/lib/knownIds.js +1 -0
- package/dist/esm/lib/resolvers/resolverService.js +19 -1
- package/dist/esm/lib/transfers/index.js +1 -0
- package/dist/esm/lib/transfers/transferResolver.js +14 -0
- package/dist/esm/stores/balanceStore.js +39 -18
- package/dist/esm/stores/contractAddressStore.js +178 -0
- package/dist/esm/stores/logStore.js +11 -0
- package/dist/esm/types/balance.js +23 -11
- package/dist/esm/types/contract.js +1 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/logEvents.js +1 -0
- package/dist/index.css +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/Models/Balance.d.ts +14 -2
- package/dist/types/Models/Balance.d.ts.map +1 -1
- package/dist/types/Models/LayerSwapSettings.d.ts +7 -0
- package/dist/types/Models/LayerSwapSettings.d.ts.map +1 -1
- package/dist/types/Models/Theme.d.ts.map +1 -1
- package/dist/types/components/Buttons/submitButton.d.ts +1 -1
- package/dist/types/components/Buttons/submitButton.d.ts.map +1 -1
- package/dist/types/components/Common/ConnectWalletButton.d.ts +1 -1
- package/dist/types/components/Common/ConnectWalletButton.d.ts.map +1 -1
- package/dist/types/components/Common/CountDownTimer.d.ts.map +1 -1
- package/dist/types/components/Common/WarningMessage.d.ts.map +1 -1
- package/dist/types/components/Common/guideLink.d.ts.map +1 -1
- package/dist/types/components/ErrorFallback.d.ts.map +1 -1
- package/dist/types/components/HeaderWithMenu.d.ts.map +1 -1
- package/dist/types/components/Icons/CircularLoader.d.ts +4 -0
- package/dist/types/components/Icons/CircularLoader.d.ts.map +1 -0
- package/dist/types/components/Icons/FailIcon.d.ts.map +1 -1
- package/dist/types/components/Icons/GasIcon.d.ts.map +1 -1
- package/dist/types/components/Icons/GlobeIcon.d.ts +4 -0
- package/dist/types/components/Icons/GlobeIcon.d.ts.map +1 -0
- package/dist/types/components/Icons/MenuIcon.d.ts +4 -0
- package/dist/types/components/Icons/MenuIcon.d.ts.map +1 -0
- package/dist/types/components/Icons/TokenIcon.d.ts.map +1 -1
- package/dist/types/components/Icons/Wallets/index.d.ts +0 -1
- package/dist/types/components/Icons/Wallets/index.d.ts.map +1 -1
- package/dist/types/components/Input/Address/AddressNote.d.ts +5 -5
- package/dist/types/components/Input/Address/AddressNote.d.ts.map +1 -1
- package/dist/types/components/Input/Address/AddressPicker/AddressBook.d.ts +3 -3
- package/dist/types/components/Input/Address/AddressPicker/AddressButton.d.ts +3 -3
- package/dist/types/components/Input/Address/AddressPicker/AddressWithIcon.d.ts +3 -2
- package/dist/types/components/Input/Address/AddressPicker/AddressWithIcon.d.ts.map +1 -1
- package/dist/types/components/Input/Address/AddressPicker/ConnectedWallets.d.ts +2 -2
- package/dist/types/components/Input/Address/AddressPicker/ManualAddressInput.d.ts +4 -4
- package/dist/types/components/Input/Address/AddressPicker/index.d.ts +4 -4
- package/dist/types/components/Input/Address/AddressPicker/index.d.ts.map +1 -1
- package/dist/types/components/Input/Address/ContractAddressNote.d.ts +9 -0
- package/dist/types/components/Input/Address/ContractAddressNote.d.ts.map +1 -0
- package/dist/types/components/Input/Address/UrlAddressNote.d.ts +10 -0
- package/dist/types/components/Input/Address/UrlAddressNote.d.ts.map +1 -0
- package/dist/types/components/Input/Address/index.d.ts +1 -1
- package/dist/types/components/Input/Amount/Balance.d.ts +1 -1
- package/dist/types/components/Input/Amount/Balance.d.ts.map +1 -1
- package/dist/types/components/Input/Amount/ExchangeReceiveAmount.d.ts +11 -0
- package/dist/types/components/Input/Amount/ExchangeReceiveAmount.d.ts.map +1 -0
- package/dist/types/components/Input/Amount/MinMax.d.ts +1 -1
- package/dist/types/components/Input/Amount/PriceImpact.d.ts +3 -6
- package/dist/types/components/Input/Amount/PriceImpact.d.ts.map +1 -1
- package/dist/types/components/Input/Amount/ReceiveAmount.d.ts +2 -3
- package/dist/types/components/Input/Amount/ReceiveAmount.d.ts.map +1 -1
- package/dist/types/components/Input/Amount/helpers.d.ts +2 -2
- package/dist/types/components/Input/Amount/index.d.ts +1 -1
- package/dist/types/components/Input/CexPicker.d.ts +1 -1
- package/dist/types/components/Input/DestinationPicker.d.ts +1 -1
- package/dist/types/components/Input/DestinationPicker.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/Content.d.ts +5 -5
- package/dist/types/components/Input/RoutePicker/Content.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/RouterPickerWalletConnect.d.ts +1 -1
- package/dist/types/components/Input/RoutePicker/RouterPickerWalletConnect.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/Routes.d.ts +4 -8
- package/dist/types/components/Input/RoutePicker/Routes.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/Rows/CollapsableHeader.d.ts +3 -4
- package/dist/types/components/Input/RoutePicker/Rows/CollapsableHeader.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/Rows/CollapsibleRow.d.ts +6 -5
- package/dist/types/components/Input/RoutePicker/Rows/CollapsibleRow.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/Rows/StickyHeader.d.ts +3 -4
- package/dist/types/components/Input/RoutePicker/Rows/StickyHeader.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/Rows/SuggestionsHeader.d.ts +7 -0
- package/dist/types/components/Input/RoutePicker/Rows/SuggestionsHeader.d.ts.map +1 -0
- package/dist/types/components/Input/RoutePicker/Rows/TitleRow.d.ts +7 -0
- package/dist/types/components/Input/RoutePicker/Rows/TitleRow.d.ts.map +1 -0
- package/dist/types/components/Input/RoutePicker/Rows/index.d.ts +5 -5
- package/dist/types/components/Input/RoutePicker/Rows/index.d.ts.map +1 -1
- package/dist/types/components/Input/RoutePicker/TokenTitleDetails.d.ts +18 -0
- package/dist/types/components/Input/RoutePicker/TokenTitleDetails.d.ts.map +1 -0
- package/dist/types/components/Input/RoutePicker/index.d.ts +1 -1
- package/dist/types/components/Input/RoutePicker/index.d.ts.map +1 -1
- package/dist/types/components/Input/SourcePicker.d.ts +1 -1
- package/dist/types/components/Input/SourceWalletPicker.d.ts.map +1 -1
- package/dist/types/components/Menu/MenuList.d.ts.map +1 -1
- package/dist/types/components/Menu/index.d.ts.map +1 -1
- package/dist/types/components/Modal/modalWithoutAnimation.d.ts +4 -2
- package/dist/types/components/Modal/modalWithoutAnimation.d.ts.map +1 -1
- package/dist/types/components/Pages/Campaigns/Details/Leaderboard.d.ts +1 -1
- package/dist/types/components/Pages/Campaigns/Details/Rewards.d.ts +1 -1
- package/dist/types/components/Pages/Campaigns/Details/index.d.ts +1 -2
- package/dist/types/components/Pages/Campaigns/Details/index.d.ts.map +1 -1
- package/dist/types/components/Pages/Campaigns/index.d.ts +2 -3
- package/dist/types/components/Pages/Campaigns/index.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/ExchangeForm.d.ts +3 -1
- package/dist/types/components/Pages/Swap/Form/ExchangeForm.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/FeeDetails/Rate.d.ts +7 -6
- package/dist/types/components/Pages/Swap/Form/FeeDetails/Rate.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/FeeDetails/ReceiveAmounts.d.ts +2 -2
- package/dist/types/components/Pages/Swap/Form/FeeDetails/Refuel.d.ts +1 -2
- package/dist/types/components/Pages/Swap/Form/FeeDetails/Refuel.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/FeeDetails/RefuelModal.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Form/FeeDetails/Slippage.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/DetailedEstimates.d.ts +3 -2
- package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/DetailedEstimates.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/SummaryRow.d.ts +4 -4
- package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/index.d.ts +4 -4
- package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/index.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/utils.d.ts +2 -2
- package/dist/types/components/Pages/Swap/Form/FeeDetails/index.d.ts +7 -4
- package/dist/types/components/Pages/Swap/Form/FeeDetails/index.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/Form.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/FormWrapper.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Form/FormWrapper.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/NetworkForm.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Form/NetworkForm.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/SecondaryComponents/FormButton.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Form/SecondaryComponents/FormButton.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/SecondaryComponents/ReserveGasNote.d.ts +2 -2
- package/dist/types/components/Pages/Swap/Form/SecondaryComponents/ReserveGasNote.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Form/SecondaryComponents/validationError/ContractAddressValidationCache.d.ts +10 -0
- package/dist/types/components/Pages/Swap/Form/SecondaryComponents/validationError/ContractAddressValidationCache.d.ts.map +1 -0
- package/dist/types/components/Pages/Swap/Form/SecondaryComponents/validationError/ErrorDisplay.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Form/SwapFormValues.d.ts +2 -2
- package/dist/types/components/Pages/Swap/Withdraw/Failed.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/ManualWithdraw.d.ts +4 -3
- package/dist/types/components/Pages/Swap/Withdraw/ManualWithdraw.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/NotFound.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/Processing/Processing.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/Processing/Processing.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/QuoteUpdate.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/Summary/Summary.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/Summary/Summary.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/SwapDetails.d.ts +2 -1
- package/dist/types/components/Pages/Swap/Withdraw/SwapDetails.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/SwapQuoteDetails.d.ts +3 -3
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/actionMessage.d.ts +6 -0
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/actionMessage.d.ts.map +1 -0
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/buttons.d.ts +4 -3
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/buttons.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/sharedTypes.d.ts +2 -1
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/sharedTypes.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/index.d.ts +2 -1
- package/dist/types/components/Pages/Swap/Withdraw/Wallet/index.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/WalletTransferButton.d.ts +2 -1
- package/dist/types/components/Pages/Swap/Withdraw/WalletTransferButton.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/WalletTransferContent.d.ts +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/Withdraw.d.ts +2 -1
- package/dist/types/components/Pages/Swap/Withdraw/Withdraw.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/index.d.ts +1 -2
- package/dist/types/components/Pages/Swap/Withdraw/index.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/messages/Message.d.ts.map +1 -1
- package/dist/types/components/Pages/Swap/Withdraw/messages/TransactionMessages.d.ts +3 -4
- package/dist/types/components/Pages/Swap/Withdraw/messages/TransactionMessages.d.ts.map +1 -1
- package/dist/types/components/Pages/SwapHistory/HistorySummary.d.ts +2 -2
- package/dist/types/components/Pages/SwapHistory/HistorySummary.d.ts.map +1 -1
- package/dist/types/components/Pages/SwapHistory/StatusIcons.d.ts +1 -1
- package/dist/types/components/Pages/SwapHistory/SwapDetailsComponent.d.ts +1 -1
- package/dist/types/components/Pages/SwapHistory/index.d.ts +3 -1
- package/dist/types/components/Pages/SwapHistory/index.d.ts.map +1 -1
- package/dist/types/components/Select/Command/commandSelect.d.ts.map +1 -1
- package/dist/types/components/Select/Selector/SelectItem.d.ts.map +1 -1
- package/dist/types/components/Wallet/WalletComponents/WalletsList.d.ts +3 -3
- package/dist/types/components/Wallet/WalletComponents/WalletsList.d.ts.map +1 -1
- package/dist/types/components/Wallet/WalletModal/Connector.d.ts +2 -1
- package/dist/types/components/Wallet/WalletModal/Connector.d.ts.map +1 -1
- package/dist/types/components/Wallet/WalletModal/ConnectorsList.d.ts +1 -1
- package/dist/types/components/Wallet/WalletModal/ConnectorsList.d.ts.map +1 -1
- package/dist/types/components/Wallet/WalletModal/InstalledExtensionNotFound.d.ts +7 -0
- package/dist/types/components/Wallet/WalletModal/InstalledExtensionNotFound.d.ts.map +1 -0
- package/dist/types/components/Wallet/WalletModal/LoadingConnect.d.ts +8 -0
- package/dist/types/components/Wallet/WalletModal/LoadingConnect.d.ts.map +1 -0
- package/dist/types/components/Wallet/WalletModal/MultichainConnectorPicker.d.ts +12 -0
- package/dist/types/components/Wallet/WalletModal/MultichainConnectorPicker.d.ts.map +1 -0
- package/dist/types/components/Wallet/WalletModal/ProviderPicker.d.ts +8 -0
- package/dist/types/components/Wallet/WalletModal/ProviderPicker.d.ts.map +1 -0
- package/dist/types/components/Wallet/WalletModal/WalletQrCode.d.ts +6 -0
- package/dist/types/components/Wallet/WalletModal/WalletQrCode.d.ts.map +1 -0
- package/dist/types/components/Wallet/WalletModal/index.d.ts +2 -1
- package/dist/types/components/Wallet/WalletModal/index.d.ts.map +1 -1
- package/dist/types/components/Wallet/WalletProviders/index.d.ts +3 -1
- package/dist/types/components/Wallet/WalletProviders/index.d.ts.map +1 -1
- package/dist/types/components/Widget/Content.d.ts +2 -1
- package/dist/types/components/Widget/Content.d.ts.map +1 -1
- package/dist/types/components/Widget/Footer.d.ts +2 -1
- package/dist/types/components/Widget/Footer.d.ts.map +1 -1
- package/dist/types/components/Widget/Index.d.ts +3 -2
- package/dist/types/components/Widget/Index.d.ts.map +1 -1
- package/dist/types/components/WidgetLoading.d.ts.map +1 -1
- package/dist/types/components/shadcn/command.d.ts +9 -52
- package/dist/types/components/shadcn/command.d.ts.map +1 -1
- package/dist/types/context/ErrorProvider.d.ts +3 -0
- package/dist/types/context/ErrorProvider.d.ts.map +1 -0
- package/dist/types/context/LayerswapProvider.d.ts +22 -4
- package/dist/types/context/LayerswapProvider.d.ts.map +1 -1
- package/dist/types/context/callbackProvider.d.ts +7 -10
- package/dist/types/context/callbackProvider.d.ts.map +1 -1
- package/dist/types/context/resolverContext.d.ts.map +1 -1
- package/dist/types/context/swap.d.ts +7 -7
- package/dist/types/context/swap.d.ts.map +1 -1
- package/dist/types/context/{balanceAccounts.d.ts → swapAccounts.d.ts} +9 -9
- package/dist/types/context/swapAccounts.d.ts.map +1 -0
- package/dist/types/context/walletProviders.d.ts.map +1 -1
- package/dist/types/context/withdrawalContext.d.ts +2 -0
- package/dist/types/context/withdrawalContext.d.ts.map +1 -1
- package/dist/types/exports/internal.d.ts +9 -7
- package/dist/types/exports/internal.d.ts.map +1 -1
- package/dist/types/helpers/accountSelectHelper.d.ts +1 -1
- package/dist/types/helpers/balanceHelper.d.ts +2 -2
- package/dist/types/helpers/filterSourceNetworks.d.ts +4 -0
- package/dist/types/helpers/filterSourceNetworks.d.ts.map +1 -0
- package/dist/types/helpers/getSettings/getSettings.d.ts +1 -1
- package/dist/types/helpers/getSettings/getSettings.d.ts.map +1 -1
- package/dist/types/helpers/routes.d.ts +1 -1
- package/dist/types/helpers/routes.d.ts.map +1 -1
- package/dist/types/helpers/tokenHelper.d.ts +2 -2
- package/dist/types/hooks/useAllWithdrawalBalances.d.ts +2 -1
- package/dist/types/hooks/useAllWithdrawalBalances.d.ts.map +1 -1
- package/dist/types/hooks/useConnectors.d.ts +28 -0
- package/dist/types/hooks/useConnectors.d.ts.map +1 -0
- package/dist/types/hooks/useFee.d.ts +1 -1
- package/dist/types/hooks/useFormRoutes.d.ts +2 -3
- package/dist/types/hooks/useFormRoutes.d.ts.map +1 -1
- package/dist/types/hooks/useFormValidation.d.ts +2 -1
- package/dist/types/hooks/useFormValidation.d.ts.map +1 -1
- package/dist/types/hooks/useSwapHistoryData.d.ts +2 -2
- package/dist/types/hooks/useTransfer.d.ts +5 -0
- package/dist/types/hooks/useTransfer.d.ts.map +1 -0
- package/dist/types/hooks/useWallet.d.ts +3 -3
- package/dist/types/hooks/useWallet.d.ts.map +1 -1
- package/dist/types/lib/AppSettings.d.ts +25 -16
- package/dist/types/lib/AppSettings.d.ts.map +1 -1
- package/dist/types/lib/ErrorHandler.d.ts +3 -0
- package/dist/types/lib/ErrorHandler.d.ts.map +1 -0
- package/dist/types/lib/address/contractAddressResolver.d.ts +7 -0
- package/dist/types/lib/address/contractAddressResolver.d.ts.map +1 -0
- package/dist/types/lib/apiClients/layerSwapApiClient.d.ts +1 -9
- package/dist/types/lib/apiClients/layerSwapApiClient.d.ts.map +1 -1
- package/dist/types/lib/balances/balanceResolver.d.ts +3 -3
- package/dist/types/lib/balances/balanceResolver.d.ts.map +1 -1
- package/dist/types/lib/balances/errorUtils.d.ts +12 -0
- package/dist/types/lib/balances/errorUtils.d.ts.map +1 -0
- package/dist/types/lib/balances/helpers.d.ts +1 -1
- package/dist/types/lib/balances/nodeErrorClassifier.d.ts +4 -0
- package/dist/types/lib/balances/nodeErrorClassifier.d.ts.map +1 -0
- package/dist/types/lib/balances/useBalance.d.ts +1 -1
- package/dist/types/lib/fees.d.ts +16 -0
- package/dist/types/lib/fees.d.ts.map +1 -1
- package/dist/types/lib/gases/gasResolver.d.ts +2 -2
- package/dist/types/lib/gases/useSWRGas.d.ts +3 -3
- package/dist/types/lib/generateSwapInitialValues.d.ts +1 -1
- package/dist/types/lib/isNewListed.d.ts +4 -0
- package/dist/types/lib/isNewListed.d.ts.map +1 -0
- package/dist/types/lib/knownIds.d.ts +1 -0
- package/dist/types/lib/knownIds.d.ts.map +1 -1
- package/dist/types/lib/nft/nftBalanceResolver.d.ts +1 -1
- package/dist/types/lib/resolvers/resolverService.d.ts +11 -5
- package/dist/types/lib/resolvers/resolverService.d.ts.map +1 -1
- package/dist/types/lib/transfers/index.d.ts +2 -0
- package/dist/types/lib/transfers/index.d.ts.map +1 -0
- package/dist/types/lib/transfers/transferResolver.d.ts +7 -0
- package/dist/types/lib/transfers/transferResolver.d.ts.map +1 -0
- package/dist/types/stores/balanceStore.d.ts +3 -0
- package/dist/types/stores/balanceStore.d.ts.map +1 -1
- package/dist/types/stores/contractAddressStore.d.ts +43 -0
- package/dist/types/stores/contractAddressStore.d.ts.map +1 -0
- package/dist/types/stores/logStore.d.ts +8 -0
- package/dist/types/stores/logStore.d.ts.map +1 -0
- package/dist/types/stores/walletStore.d.ts +1 -1
- package/dist/types/types/balance.d.ts +2 -2
- package/dist/types/types/balance.d.ts.map +1 -1
- package/dist/types/types/contract.d.ts +6 -0
- package/dist/types/types/contract.d.ts.map +1 -0
- package/dist/types/types/gas.d.ts +2 -2
- package/dist/types/types/index.d.ts +2 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/logEvents.d.ts +59 -0
- package/dist/types/types/logEvents.d.ts.map +1 -0
- package/dist/types/types/nft.d.ts +1 -1
- package/dist/types/types/transfer.d.ts +7 -2
- package/dist/types/types/transfer.d.ts.map +1 -1
- package/dist/types/types/wallet.d.ts +29 -8
- package/dist/types/types/wallet.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/esm/components/Icons/Wallets/Keplr.js +0 -3
- package/dist/esm/components/Modal/popover.js +0 -15
- package/dist/esm/components/Wallet/WalletModal/utils.js +0 -23
- package/dist/esm/helpers/querryHelper.js +0 -13
- package/dist/esm/lib/logError.js +0 -17
- package/dist/esm/lib/sorting.js +0 -63
- package/dist/types/components/Icons/Wallets/Keplr.d.ts +0 -4
- package/dist/types/components/Icons/Wallets/Keplr.d.ts.map +0 -1
- package/dist/types/components/Modal/popover.d.ts +0 -12
- package/dist/types/components/Modal/popover.d.ts.map +0 -1
- package/dist/types/components/Wallet/WalletModal/utils.d.ts +0 -2
- package/dist/types/components/Wallet/WalletModal/utils.d.ts.map +0 -1
- package/dist/types/context/balanceAccounts.d.ts.map +0 -1
- package/dist/types/helpers/querryHelper.d.ts +0 -3
- package/dist/types/helpers/querryHelper.d.ts.map +0 -1
- package/dist/types/lib/logError.d.ts +0 -3
- package/dist/types/lib/logError.d.ts.map +0 -1
- package/dist/types/lib/sorting.d.ts +0 -22
- package/dist/types/lib/sorting.d.ts.map +0 -1
|
@@ -4,6 +4,6 @@ import * as React from "react";
|
|
|
4
4
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
5
5
|
import { Check } from "lucide-react";
|
|
6
6
|
import { classNames } from "../utils/classNames";
|
|
7
|
-
const Checkbox = React.forwardRef(({ className, ...props }, ref) => (_jsx(CheckboxPrimitive.Root, { ref: ref, className: classNames("peer h-
|
|
7
|
+
const Checkbox = React.forwardRef(({ className, ...props }, ref) => (_jsx(CheckboxPrimitive.Root, { ref: ref, className: classNames("peer h-3 w-3 shrink-0 rounded border border-secondary-text data-[state=checked]:border-primary-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-text data-[state=checked]:text-secondary-800", className), ...props, children: _jsx(CheckboxPrimitive.Indicator, { className: classNames("flex items-center justify-center text-current"), children: _jsx(Check, { className: "h-3 w-3" }) }) })));
|
|
8
8
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
9
9
|
export { Checkbox };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useEffect } from 'react';
|
|
3
|
+
import { useCallbacks } from './callbackProvider';
|
|
4
|
+
import { logStore } from '../stores/logStore';
|
|
5
|
+
const LogContext = createContext(null);
|
|
6
|
+
export const ErrorProvider = ({ children }) => {
|
|
7
|
+
const callbacks = useCallbacks();
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
if (callbacks?.onError) {
|
|
10
|
+
logStore.getState().setLogger(callbacks.onError);
|
|
11
|
+
}
|
|
12
|
+
}, [callbacks.onError]);
|
|
13
|
+
return _jsx(LogContext.Provider, { value: null, children: children });
|
|
14
|
+
};
|
|
@@ -16,17 +16,18 @@ import ColorSchema from "../components/ColorSchema";
|
|
|
16
16
|
import { WidgetLoading } from "../components/WidgetLoading";
|
|
17
17
|
import WalletsProviders from "../components/Wallet/WalletProviders";
|
|
18
18
|
import { CallbackProvider } from "./callbackProvider";
|
|
19
|
-
import {
|
|
19
|
+
import { SwapAccountsProvider } from "./swapAccounts";
|
|
20
20
|
import { ResolverProviders } from "./resolverContext";
|
|
21
|
+
import { ErrorProvider } from "./ErrorProvider";
|
|
21
22
|
const INTERCOM_APP_ID = 'h5zisg78';
|
|
22
23
|
const LayerswapProviderComponent = ({ children, callbacks, config, walletProviders = [] }) => {
|
|
23
|
-
let { apiKey, version, settings: _settings, theme: themeData, imtblPassport,
|
|
24
|
+
let { apiKey, version, settings: _settings, theme: themeData, initialValues, imtblPassport, tonConfigs, walletConnect } = config || {};
|
|
24
25
|
const [fetchedSettings, setFetchedSettings] = useState(null);
|
|
25
26
|
themeData = { ...THEME_COLORS['default'], ...config?.theme };
|
|
26
27
|
AppSettings.ApiVersion = version || AppSettings.ApiVersion;
|
|
27
28
|
AppSettings.ImtblPassportConfig = imtblPassport;
|
|
28
|
-
AppSettings.TonClientConfig =
|
|
29
|
-
AppSettings.WalletConnectConfig =
|
|
29
|
+
AppSettings.TonClientConfig = tonConfigs || AppSettings.TonClientConfig;
|
|
30
|
+
AppSettings.WalletConnectConfig = walletConnect || AppSettings.WalletConnectConfig;
|
|
30
31
|
AppSettings.ThemeData = themeData;
|
|
31
32
|
if (apiKey)
|
|
32
33
|
LayerSwapApiClient.apiKey = apiKey;
|
|
@@ -44,7 +45,7 @@ const LayerswapProviderComponent = ({ children, callbacks, config, walletProvide
|
|
|
44
45
|
if (!settings)
|
|
45
46
|
return _jsx(WidgetLoading, {});
|
|
46
47
|
let appSettings = new LayerSwapAppSettings(settings);
|
|
47
|
-
return (_jsx(IntercomProvider, { appId: INTERCOM_APP_ID, initializeDelay: 2500, children: _jsx(SettingsProvider, { initialLayerswapData: appSettings, initialSettings: config?.initialValues, children: _jsx(CallbackProvider, { callbacks: callbacks, children: _jsx(ErrorBoundary, { FallbackComponent: ErrorFallback, children: _jsx(ThemeWrapper, { children: _jsx(WalletsProviders, { appName: initialValues?.appName, themeData: themeData, walletProviders: walletProviders, children: _jsx(ResolverProviders, { walletProviders: walletProviders, children: _jsx(
|
|
48
|
+
return (_jsx(IntercomProvider, { appId: INTERCOM_APP_ID, initializeDelay: 2500, children: _jsx(SettingsProvider, { initialLayerswapData: appSettings, initialSettings: config?.initialValues, children: _jsx(CallbackProvider, { callbacks: callbacks, children: _jsx(ErrorProvider, { children: _jsx(ErrorBoundary, { FallbackComponent: ErrorFallback, children: _jsx(ThemeWrapper, { children: _jsx(WalletsProviders, { appName: initialValues?.appName, themeData: themeData, walletProviders: walletProviders, children: _jsx(ResolverProviders, { walletProviders: walletProviders, children: _jsx(SwapAccountsProvider, { children: _jsx(AsyncModalProvider, { children: children }) }) }) }) }) }) }) }) }) }));
|
|
48
49
|
};
|
|
49
50
|
export const LayerswapProvider = (props) => {
|
|
50
51
|
return (_jsxs(_Fragment, { children: [_jsx(ColorSchema, { themeData: props.config?.theme }), _jsx("div", { style: { backgroundColor: 'transparent', height: '100%' }, className: "layerswap-styles", children: _jsx(LayerswapProviderComponent, { ...props, children: props.children }) })] }));
|
|
@@ -1,58 +1,66 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
3
|
+
import { ErrorHandler } from '../lib/ErrorHandler';
|
|
4
|
+
const CallbackContext = createContext(undefined);
|
|
5
|
+
export function CallbackProvider({ children, callbacks }) {
|
|
6
|
+
const value = useMemo(() => {
|
|
7
|
+
return {
|
|
8
|
+
onFormChange: (formData) => { try {
|
|
9
|
+
callbacks?.onFormChange?.(formData);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
ErrorHandler(error);
|
|
13
|
+
} },
|
|
14
|
+
onSwapCreate: (swapData) => { try {
|
|
15
|
+
callbacks?.onSwapCreate?.(swapData);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
ErrorHandler(error);
|
|
19
|
+
} },
|
|
20
|
+
onSwapComplete: (swapData) => { try {
|
|
21
|
+
callbacks?.onSwapComplete?.(swapData);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
ErrorHandler(error);
|
|
25
|
+
} },
|
|
26
|
+
onSwapModalStateChange: (open) => { try {
|
|
27
|
+
callbacks?.onSwapModalStateChange?.(open);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
ErrorHandler(error);
|
|
31
|
+
} },
|
|
32
|
+
onBackClick: () => { try {
|
|
33
|
+
callbacks?.onBackClick?.();
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
ErrorHandler(error);
|
|
37
|
+
} },
|
|
38
|
+
onError: (error) => { try {
|
|
39
|
+
callbacks?.onError?.(error);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
ErrorHandler(error);
|
|
43
|
+
} },
|
|
44
|
+
onSwapStatusChange: (event) => { try {
|
|
45
|
+
callbacks?.onSwapStatusChange?.(event);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
ErrorHandler(error);
|
|
49
|
+
} },
|
|
50
|
+
onMenuNavigationChange: (path) => { try {
|
|
51
|
+
callbacks?.onMenuNavigationChange?.(path);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
ErrorHandler(error);
|
|
55
|
+
} },
|
|
56
|
+
};
|
|
57
|
+
}, [callbacks]);
|
|
58
|
+
return (_jsx(CallbackContext.Provider, { value: value, children: children }));
|
|
6
59
|
}
|
|
7
60
|
export function useCallbacks() {
|
|
8
61
|
const context = useContext(CallbackContext);
|
|
62
|
+
if (!context) {
|
|
63
|
+
throw new Error('useCallbacks must be used within a CallbackProvider');
|
|
64
|
+
}
|
|
9
65
|
return context;
|
|
10
66
|
}
|
|
11
|
-
export function useFormChangeCallback() {
|
|
12
|
-
const { onFormChange } = useCallbacks();
|
|
13
|
-
return useCallback((formData) => {
|
|
14
|
-
if (onFormChange) {
|
|
15
|
-
onFormChange(formData);
|
|
16
|
-
}
|
|
17
|
-
}, [onFormChange]);
|
|
18
|
-
}
|
|
19
|
-
export function useSwapCreateCallback() {
|
|
20
|
-
const { onSwapCreate } = useCallbacks();
|
|
21
|
-
return useCallback((swapData) => {
|
|
22
|
-
if (onSwapCreate) {
|
|
23
|
-
onSwapCreate(swapData);
|
|
24
|
-
}
|
|
25
|
-
}, [onSwapCreate]);
|
|
26
|
-
}
|
|
27
|
-
export function useSwapCompleteCallback() {
|
|
28
|
-
const { onSwapComplete } = useCallbacks();
|
|
29
|
-
return useCallback((swapData) => {
|
|
30
|
-
if (onSwapComplete) {
|
|
31
|
-
onSwapComplete(swapData);
|
|
32
|
-
}
|
|
33
|
-
}, [onSwapComplete]);
|
|
34
|
-
}
|
|
35
|
-
export function useSwapModalStateChangeCallback() {
|
|
36
|
-
const { onSwapModalStateChange } = useCallbacks();
|
|
37
|
-
return useCallback((open) => {
|
|
38
|
-
if (onSwapModalStateChange) {
|
|
39
|
-
onSwapModalStateChange(open);
|
|
40
|
-
}
|
|
41
|
-
}, [onSwapModalStateChange]);
|
|
42
|
-
}
|
|
43
|
-
export function useBackClickCallback() {
|
|
44
|
-
const { onBackClick } = useCallbacks();
|
|
45
|
-
return useCallback(() => {
|
|
46
|
-
if (onBackClick) {
|
|
47
|
-
onBackClick();
|
|
48
|
-
}
|
|
49
|
-
}, [onBackClick]);
|
|
50
|
-
}
|
|
51
|
-
export function useErrorCallback() {
|
|
52
|
-
const { onError } = useCallbacks();
|
|
53
|
-
return useCallback((error) => {
|
|
54
|
-
if (onError) {
|
|
55
|
-
onError(error);
|
|
56
|
-
}
|
|
57
|
-
}, [onError]);
|
|
58
|
-
}
|
|
@@ -3,6 +3,15 @@ import { createContext, useContext, useMemo } from "react";
|
|
|
3
3
|
import { resolverService } from "../lib/resolvers/resolverService";
|
|
4
4
|
const ResolverContext = createContext(null);
|
|
5
5
|
export const ResolverProviders = ({ children, walletProviders }) => {
|
|
6
|
+
const transferProviders = walletProviders
|
|
7
|
+
.map(provider => provider.transferProvider)
|
|
8
|
+
.flat()
|
|
9
|
+
.filter((provider) => Boolean(provider))
|
|
10
|
+
.map(provider => provider());
|
|
11
|
+
const contractAddressProviders = walletProviders
|
|
12
|
+
.map(provider => provider.contractAddressProvider)
|
|
13
|
+
.flat()
|
|
14
|
+
.filter((provider) => Boolean(provider));
|
|
6
15
|
const isInitialized = useMemo(() => {
|
|
7
16
|
// Extract balance providers from wallet providers
|
|
8
17
|
const balanceProviders = walletProviders
|
|
@@ -23,9 +32,9 @@ export const ResolverProviders = ({ children, walletProviders }) => {
|
|
|
23
32
|
.map(provider => provider.nftProvider)
|
|
24
33
|
.flat()
|
|
25
34
|
.filter((provider) => Boolean(provider));
|
|
26
|
-
resolverService.setProviders(balanceProviders, gasProviders, addressUtilsProviders, nftProviders);
|
|
35
|
+
resolverService.setProviders(balanceProviders, gasProviders, addressUtilsProviders, nftProviders, transferProviders, contractAddressProviders);
|
|
27
36
|
return true;
|
|
28
|
-
}, [walletProviders]);
|
|
37
|
+
}, [walletProviders, transferProviders]);
|
|
29
38
|
return (_jsx(ResolverContext.Provider, { value: { isInitialized }, children: children }));
|
|
30
39
|
};
|
|
31
40
|
export const useResolvers = () => {
|
package/dist/esm/context/swap.js
CHANGED
|
@@ -7,11 +7,11 @@ import useWallet from '../hooks/useWallet';
|
|
|
7
7
|
import { useSettingsState } from './settings';
|
|
8
8
|
import { transformSwapDataToQuoteArgs, useQuoteData } from '../hooks/useFee';
|
|
9
9
|
import { useRecentNetworksStore } from '../stores/recentRoutesStore';
|
|
10
|
-
import { useSelectedAccount } from './
|
|
10
|
+
import { useSelectedAccount } from './swapAccounts';
|
|
11
11
|
import { useInitialSettings } from './settings';
|
|
12
12
|
import { addressFormat } from '../lib/address/formatter';
|
|
13
13
|
import { useSlippageStore } from '../stores/slippageStore';
|
|
14
|
-
|
|
14
|
+
import { useCallbacks } from './callbackProvider';
|
|
15
15
|
export const SwapDataStateContext = createContext({
|
|
16
16
|
depositAddressIsFromAccount: false,
|
|
17
17
|
withdrawType: undefined,
|
|
@@ -31,18 +31,19 @@ export const SwapDataStateContext = createContext({
|
|
|
31
31
|
});
|
|
32
32
|
export const SwapDataUpdateContext = createContext(null);
|
|
33
33
|
export function SwapDataProvider({ children }) {
|
|
34
|
+
const { sourceRoutes, destinationRoutes } = useSettingsState();
|
|
35
|
+
const initialSettings = useInitialSettings();
|
|
36
|
+
const { onSwapCreate } = useCallbacks();
|
|
37
|
+
const updateRecentTokens = useRecentNetworksStore(state => state.updateRecentNetworks);
|
|
38
|
+
const [swapBasicFormData, setSwapBasicFormData] = useState();
|
|
39
|
+
const { providers } = useWallet(swapBasicFormData?.source_network, 'asSource');
|
|
34
40
|
const [quoteIsLoading, setQuoteLoading] = useState(false);
|
|
35
41
|
const [withdrawType, setWithdrawType] = useState();
|
|
36
42
|
const [depositAddressIsFromAccount, setDepositAddressIsFromAccount] = useState();
|
|
37
|
-
const initialSettings = useInitialSettings();
|
|
38
43
|
const [swapId, setSwapId] = useState(initialSettings.swapId?.toString());
|
|
39
44
|
const [swapTransaction, setSwapTransaction] = useState();
|
|
40
|
-
const { sourceRoutes, destinationRoutes } = useSettingsState();
|
|
41
|
-
const [swapBasicFormData, setSwapBasicFormData] = useState();
|
|
42
|
-
const updateRecentTokens = useRecentNetworksStore(state => state.updateRecentNetworks);
|
|
43
45
|
const [swapModalOpen, setSwapModalOpen] = useState(false);
|
|
44
46
|
const [swapError, setSwapError] = useState('');
|
|
45
|
-
const { providers } = useWallet(swapBasicFormData?.source_network, 'asSource');
|
|
46
47
|
const quoteArgs = useMemo(() => transformSwapDataToQuoteArgs(swapBasicFormData, !!swapBasicFormData?.refuel), [swapBasicFormData]);
|
|
47
48
|
const { quote: formDataQuote, quoteError: formDataQuoteError } = useQuoteData(quoteArgs, swapId ? 0 : undefined);
|
|
48
49
|
const handleUpdateSwapid = (value) => {
|
|
@@ -169,17 +170,13 @@ export function SwapDataProvider({ children }) {
|
|
|
169
170
|
const swap = swapResponse?.data;
|
|
170
171
|
if (!swap?.swap.id)
|
|
171
172
|
throw new Error("Could not create swap");
|
|
173
|
+
onSwapCreate(swap);
|
|
172
174
|
updateRecentTokens({
|
|
173
175
|
from: !fromExchange ? { network: from.name, token: fromCurrency.symbol } : undefined,
|
|
174
176
|
to: { network: to.name, token: toCurrency.symbol }
|
|
175
177
|
});
|
|
176
|
-
// posthog.capture('Swap initiated', {
|
|
177
|
-
// name: 'Swap initiated',
|
|
178
|
-
// swapId: swapDetails?.id ?? null,
|
|
179
|
-
// path: typeof window !== 'undefined' ? window.location.pathname : undefined,
|
|
180
|
-
// });
|
|
181
178
|
return swap;
|
|
182
|
-
}, [selectedSourceAccount, formDataQuote]);
|
|
179
|
+
}, [selectedSourceAccount, formDataQuote, onSwapCreate]);
|
|
183
180
|
const updateFns = {
|
|
184
181
|
createSwap,
|
|
185
182
|
setInterval,
|
|
@@ -3,9 +3,9 @@ import { createContext, useCallback, useContext, useMemo, useState } from 'react
|
|
|
3
3
|
import useWallet from '../hooks/useWallet';
|
|
4
4
|
import AddressIcon from '../components/Common/AddressIcon';
|
|
5
5
|
import { getKey, useBalanceStore } from '../stores/balanceStore';
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
export function
|
|
6
|
+
const SwapAccountsStateContext = createContext(null);
|
|
7
|
+
const SwapAccountsUpdateContext = createContext(null);
|
|
8
|
+
export function SwapAccountsProvider({ children }) {
|
|
9
9
|
const [selectedDestAccounts, setSelectedDestinationAccounts] = useState([]);
|
|
10
10
|
const [selectedSourceAccounts, setSelectedSourceAccounts] = useState([]);
|
|
11
11
|
const { providers } = useWallet();
|
|
@@ -17,7 +17,7 @@ export function BalanceAccountsProvider({ children }) {
|
|
|
17
17
|
const wallet = selectedWallet || provider.activeWallet;
|
|
18
18
|
const selectedAccountAddress = selectedWallet ? selectedSourceAccounts.find(acc => acc.providerName === provider.name && acc.id === selectedWallet.id)?.address : undefined;
|
|
19
19
|
const address = selectedAccountAddress ? selectedAccountAddress : wallet.address;
|
|
20
|
-
const res =
|
|
20
|
+
const res = ResolveWalletSwapAccount(provider, wallet, address);
|
|
21
21
|
if (!selectedAccountAddress) {
|
|
22
22
|
setSelectedSourceAccounts(prev => {
|
|
23
23
|
const existingAccountIndex = prev.findIndex(acc => acc.providerName === res.providerName);
|
|
@@ -36,7 +36,7 @@ export function BalanceAccountsProvider({ children }) {
|
|
|
36
36
|
return providers.map(provider => {
|
|
37
37
|
const manuallyAdded = selectedDestAccounts.find(acc => acc.providerName === provider.name && acc.id === 'manually_added');
|
|
38
38
|
if (manuallyAdded) {
|
|
39
|
-
return
|
|
39
|
+
return ResolveManualSwapAccount(provider, manuallyAdded.address);
|
|
40
40
|
}
|
|
41
41
|
if (!hasWallet(provider))
|
|
42
42
|
return null;
|
|
@@ -44,7 +44,7 @@ export function BalanceAccountsProvider({ children }) {
|
|
|
44
44
|
const wallet = selectedWallet || provider.activeWallet;
|
|
45
45
|
const selectedAccountAddress = selectedWallet ? selectedDestAccounts.find(acc => acc.providerName === provider.name && acc.id === selectedWallet.id)?.address : undefined;
|
|
46
46
|
const address = selectedAccountAddress ? selectedAccountAddress : wallet.address;
|
|
47
|
-
return
|
|
47
|
+
return ResolveWalletSwapAccount(provider, wallet, address);
|
|
48
48
|
}).filter(Boolean);
|
|
49
49
|
}, [providers, selectedDestAccounts]);
|
|
50
50
|
const selectDestinationAccount = useCallback((account) => {
|
|
@@ -81,21 +81,21 @@ export function BalanceAccountsProvider({ children }) {
|
|
|
81
81
|
selectDestinationAccount,
|
|
82
82
|
selectSourceAccount,
|
|
83
83
|
}), [sourceAccounts, destinationAccounts, selectSourceAccount, selectDestinationAccount]);
|
|
84
|
-
return (_jsx(
|
|
84
|
+
return (_jsx(SwapAccountsStateContext.Provider, { value: stateValues, children: _jsx(SwapAccountsUpdateContext.Provider, { value: update, children: children }) }));
|
|
85
85
|
}
|
|
86
|
-
export function
|
|
87
|
-
const values = useContext(
|
|
86
|
+
export function useSwapAccounts(direction) {
|
|
87
|
+
const values = useContext(SwapAccountsStateContext);
|
|
88
88
|
if (values === undefined) {
|
|
89
|
-
throw new Error('
|
|
89
|
+
throw new Error('useSwapAccounts must be used within a SwapAccountsProvider');
|
|
90
90
|
}
|
|
91
91
|
return direction === "from" ? values.sourceAccounts : values.destinationAccounts;
|
|
92
92
|
}
|
|
93
93
|
export function useSelectedAccount(direction, networkName) {
|
|
94
|
-
const values = useContext(
|
|
94
|
+
const values = useContext(SwapAccountsStateContext);
|
|
95
95
|
if (!networkName)
|
|
96
96
|
return undefined;
|
|
97
97
|
if (values === undefined) {
|
|
98
|
-
throw new Error('
|
|
98
|
+
throw new Error('useSwapAccounts must be used within a SwapAccountsProvider');
|
|
99
99
|
}
|
|
100
100
|
return direction === "from" ? values.sourceAccounts.find(acc => acc.provider.withdrawalSupportedNetworks?.some(n => n === networkName))
|
|
101
101
|
:
|
|
@@ -117,17 +117,17 @@ export function useNetworkBalance(direction, networkName) {
|
|
|
117
117
|
const balance = useBalanceStore((s) => (s.balances[balanceKey || "unknown"]));
|
|
118
118
|
return balance;
|
|
119
119
|
}
|
|
120
|
-
export function
|
|
121
|
-
const values = useContext(
|
|
120
|
+
export function useSelectSwapAccount(direction) {
|
|
121
|
+
const values = useContext(SwapAccountsUpdateContext);
|
|
122
122
|
if (values === undefined) {
|
|
123
|
-
throw new Error('
|
|
123
|
+
throw new Error('useSelectSwapAccount must be used within a SwapAccountsUpdateContext');
|
|
124
124
|
}
|
|
125
125
|
return direction === "from" ? values.selectSourceAccount : values.selectDestinationAccount;
|
|
126
126
|
}
|
|
127
127
|
function hasWallet(p) {
|
|
128
128
|
return Boolean(p.activeWallet);
|
|
129
129
|
}
|
|
130
|
-
function
|
|
130
|
+
function ResolveWalletSwapAccount(provider, wallet, address) {
|
|
131
131
|
return {
|
|
132
132
|
address,
|
|
133
133
|
provider,
|
|
@@ -141,7 +141,7 @@ function ResolveWalletBalanceAccount(provider, wallet, address) {
|
|
|
141
141
|
icon: wallet.icon || ((props) => _jsx(AddressIcon, { address: address, size: 24, ...props })),
|
|
142
142
|
};
|
|
143
143
|
}
|
|
144
|
-
function
|
|
144
|
+
function ResolveManualSwapAccount(provider, address) {
|
|
145
145
|
return {
|
|
146
146
|
address,
|
|
147
147
|
provider,
|
|
@@ -6,7 +6,7 @@ import { transformFormValuesToQuoteArgs, useQuoteData } from '../hooks/useFee';
|
|
|
6
6
|
import { resolveFormValidation } from '../hooks/useFormValidation';
|
|
7
7
|
import { resolveRouteValidation } from '../hooks/useRouteValidation';
|
|
8
8
|
import { useSwapDataState } from './swap';
|
|
9
|
-
import { useSelectedAccount } from './
|
|
9
|
+
import { useSelectedAccount } from './swapAccounts';
|
|
10
10
|
const defaultContext = {
|
|
11
11
|
formValidation: { message: '' },
|
|
12
12
|
routeValidation: { message: '', details: {} },
|
|
@@ -8,10 +8,15 @@ import { ChevronLeft } from "lucide-react";
|
|
|
8
8
|
import ConnectorsList from "../components/Wallet/WalletModal/ConnectorsList";
|
|
9
9
|
import { useConnectModal } from "../components/Wallet/WalletModal";
|
|
10
10
|
import { isMobile } from "../lib/wallets/utils/isMobile";
|
|
11
|
+
import AppSettings from "../lib/AppSettings";
|
|
12
|
+
import { filterSourceNetworks } from "../helpers/filterSourceNetworks";
|
|
13
|
+
import useWindowDimensions from "../hooks/useWindowDimensions";
|
|
11
14
|
const WalletProvidersContext = createContext([]);
|
|
12
15
|
export const WalletProvidersProvider = ({ children, walletProviders }) => {
|
|
13
16
|
const { networks } = useSettingsState();
|
|
17
|
+
const settings = useSettingsState();
|
|
14
18
|
const isMobilePlatform = isMobile();
|
|
19
|
+
const { isMobile: isMobileSize } = useWindowDimensions();
|
|
15
20
|
const { goBack, onFinish, open, setOpen, selectedConnector, selectedMultiChainConnector } = useConnectModal();
|
|
16
21
|
const allProviders = walletProviders.map(provider => provider.walletConnectionProvider ? provider.walletConnectionProvider({ networks }) : undefined).filter(provider => provider !== undefined);
|
|
17
22
|
const providers = useMemo(() => {
|
|
@@ -19,9 +24,10 @@ export const WalletProvidersProvider = ({ children, walletProviders }) => {
|
|
|
19
24
|
networks.some(net => provider.autofillSupportedNetworks?.includes(net.name) ||
|
|
20
25
|
provider.withdrawalSupportedNetworks?.includes(net.name) ||
|
|
21
26
|
provider.asSourceSupportedNetworks?.includes(net.name)));
|
|
27
|
+
AppSettings.AvailableSourceNetworkTypes = filterSourceNetworks(settings, filteredProviders);
|
|
22
28
|
return filteredProviders;
|
|
23
29
|
}, [networks, isMobilePlatform, allProviders]);
|
|
24
30
|
return (_jsxs(WalletProvidersContext.Provider, { value: providers, children: [children, _jsx(VaulDrawer, { show: open, setShow: setOpen, onClose: onFinish, modalId: "connectNewWallet", header: _jsxs("div", { className: "flex items-center gap-1", children: [(selectedConnector || selectedMultiChainConnector) &&
|
|
25
|
-
_jsx("div", { className: "sm:-ml-2
|
|
31
|
+
_jsx("div", { className: "sm:-ml-2 ml-0", children: _jsx(IconButton, { onClick: goBack, icon: _jsx(ChevronLeft, { className: "h-6 w-6" }) }) }), _jsx("p", { children: (selectedMultiChainConnector && !selectedConnector) ? "Select ecosystem" : "Connect wallet" })] }), children: _jsx(VaulDrawer.Snap, { openFullHeight: !isMobileSize, id: 'item-1', className: "pb-4 sm:pb-0! sm:h-full", children: _jsx(ConnectorsList, { onFinish: onFinish }) }) })] }));
|
|
26
32
|
};
|
|
27
33
|
export const useWalletProviders = () => useContext(WalletProvidersContext);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
const WalletWithdrawalContext = React.createContext(null);
|
|
4
|
-
export const WithdrawalProvider = ({ onWalletWithdrawalSuccess, children }) => {
|
|
5
|
-
return (_jsx(WalletWithdrawalContext.Provider, { value: { onWalletWithdrawalSuccess }, children: children }));
|
|
4
|
+
export const WithdrawalProvider = ({ onWalletWithdrawalSuccess, onCancelWithdrawal, children }) => {
|
|
5
|
+
return (_jsx(WalletWithdrawalContext.Provider, { value: { onWalletWithdrawalSuccess, onCancelWithdrawal }, children: children }));
|
|
6
6
|
};
|
|
7
7
|
export function useWalletWithdrawalState() {
|
|
8
8
|
const data = React.useContext(WalletWithdrawalContext);
|
|
@@ -3,8 +3,6 @@ import KnownInternalNames from "../lib/knownIds";
|
|
|
3
3
|
export { KnownInternalNames };
|
|
4
4
|
import NetworkSettings from "../lib/NetworkSettings";
|
|
5
5
|
export { NetworkSettings };
|
|
6
|
-
import logError from "../lib/logError";
|
|
7
|
-
export { logError };
|
|
8
6
|
export { insertIfNotExists } from "../lib/balances/helpers";
|
|
9
7
|
export * from "../lib/retry";
|
|
10
8
|
export { fetchWithTimeout } from "../lib/fetchWithTimeout";
|
|
@@ -18,11 +16,14 @@ export * from "../components/shadcn";
|
|
|
18
16
|
export { default as WalletMessage } from "../components/Pages/Swap/Withdraw/messages/Message";
|
|
19
17
|
export * from "../components/Buttons";
|
|
20
18
|
export * from "../components/Pages/Swap/Withdraw/Wallet/Common/buttons";
|
|
19
|
+
export * from "../components/Pages/Swap/Withdraw/Wallet/Common/actionMessage";
|
|
21
20
|
export { default as ClickTooltip } from "../components/Common/ClickTooltip";
|
|
22
|
-
export { useSelectedAccount,
|
|
21
|
+
export { useSelectedAccount, useSelectSwapAccount, useSwapAccounts, useNetworkBalance } from "../context/swapAccounts";
|
|
23
22
|
export { default as useWallet } from "../hooks/useWallet";
|
|
24
23
|
export * from "../lib/apiClients";
|
|
25
24
|
export * from "../lib/formatUnits";
|
|
26
25
|
export * from "../stores";
|
|
27
26
|
export { default as shortenAddress } from "../components/utils/ShortenAddress";
|
|
28
27
|
export * from "../context/swap";
|
|
28
|
+
export { useWalletProvidersList } from "../components/Wallet/WalletProviders";
|
|
29
|
+
export { ErrorHandler } from '../lib/ErrorHandler';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function filterSourceNetworks(settings, walletProviders) {
|
|
2
|
+
const networkTypesAggregation = settings.sourceRoutes?.reduce((acc, route) => {
|
|
3
|
+
if (!acc[route.type]) {
|
|
4
|
+
acc[route.type] = [];
|
|
5
|
+
}
|
|
6
|
+
acc[route.type].push(route);
|
|
7
|
+
return acc;
|
|
8
|
+
}, {}) || {};
|
|
9
|
+
const allNetworkTypes = Object.keys(networkTypesAggregation);
|
|
10
|
+
const availableNetworkTypes = allNetworkTypes.filter(networkType => {
|
|
11
|
+
return networkTypesAggregation[networkType].some(route => route.deposit_methods.includes("deposit_address") ||
|
|
12
|
+
walletProviders.some(provider => provider.withdrawalSupportedNetworks.includes(route.name)));
|
|
13
|
+
});
|
|
14
|
+
if (availableNetworkTypes.length === allNetworkTypes.length) {
|
|
15
|
+
return {
|
|
16
|
+
all: true,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
all: false,
|
|
21
|
+
networks: availableNetworkTypes
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -2,17 +2,22 @@ import LayerSwapApiClient from "../../lib/apiClients/layerSwapApiClient";
|
|
|
2
2
|
export async function getSettings(apiKey) {
|
|
3
3
|
const apiClient = new LayerSwapApiClient();
|
|
4
4
|
LayerSwapApiClient.apiKey = apiKey;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
try {
|
|
6
|
+
const { data: networkData } = await apiClient.GetLSNetworksAsync();
|
|
7
|
+
const { data: sourceExchangesData } = await apiClient.GetSourceExchangesAsync();
|
|
8
|
+
const { data: sourceRoutes } = await apiClient.GetRoutesAsync('sources');
|
|
9
|
+
const { data: destinationRoutes } = await apiClient.GetRoutesAsync('destinations');
|
|
10
|
+
if (!networkData)
|
|
11
|
+
return;
|
|
12
|
+
const settings = {
|
|
13
|
+
networks: networkData,
|
|
14
|
+
sourceExchanges: sourceExchangesData || [],
|
|
15
|
+
sourceRoutes: sourceRoutes || [],
|
|
16
|
+
destinationRoutes: destinationRoutes || []
|
|
17
|
+
};
|
|
18
|
+
return settings;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
18
23
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import AppSettings from "../lib/AppSettings";
|
|
1
2
|
export const resolveExchangesURLForSelectedToken = (values) => {
|
|
2
3
|
const include_unmatched = 'true';
|
|
3
4
|
const include_swaps = 'false';
|
|
@@ -62,7 +63,9 @@ export const resolveRoutesURLForSelectedToken = ({ direction, network, token, in
|
|
|
62
63
|
}
|
|
63
64
|
: {})
|
|
64
65
|
});
|
|
65
|
-
const
|
|
66
|
+
const availableNetworkTypes = AppSettings.AvailableSourceNetworkTypes;
|
|
67
|
+
const networkTypesQuery = availableNetworkTypes?.all ? '' : availableNetworkTypes?.networks?.map(type => `network_types=${type}`).join('&') || '';
|
|
68
|
+
const sourceRoutesURL = `/sources?${params.toString()}${networkTypesQuery ? `&${networkTypesQuery}` : ''}`;
|
|
66
69
|
const destinationRoutesURL = `/destinations?${params.toString()}`;
|
|
67
70
|
const result = direction === "from" ? sourceRoutesURL : destinationRoutesURL;
|
|
68
71
|
return result;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { useSettingsState } from "../context/settings";
|
|
2
2
|
import { selectResolvedSortingBalances, useBalanceStore } from "../stores/balanceStore";
|
|
3
3
|
import { useEffect, useMemo, useRef } from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { useSwapAccounts } from "../context/swapAccounts";
|
|
5
5
|
export default function useAllWithdrawalBalances() {
|
|
6
6
|
const networks = useSettingsState().networks;
|
|
7
|
-
const
|
|
7
|
+
const swapAccounts = useSwapAccounts("from");
|
|
8
8
|
const walletNetworks = useMemo(() => {
|
|
9
|
-
return
|
|
9
|
+
return swapAccounts.map(account => {
|
|
10
10
|
const withdrawalNetworks = account.walletWithdrawalSupportedNetworks;
|
|
11
11
|
if (!withdrawalNetworks || withdrawalNetworks.length === 0)
|
|
12
12
|
return [];
|
|
@@ -20,7 +20,7 @@ export default function useAllWithdrawalBalances() {
|
|
|
20
20
|
};
|
|
21
21
|
});
|
|
22
22
|
}).flat().filter(item => item !== null);
|
|
23
|
-
}, [
|
|
23
|
+
}, [swapAccounts, networks]);
|
|
24
24
|
const walletNetwokrsString = useMemo(() => {
|
|
25
25
|
return walletNetworks.map(item => `${item.address}-${item.network.name}`).join(',');
|
|
26
26
|
}, [walletNetworks]);
|
|
@@ -28,12 +28,18 @@ export default function useAllWithdrawalBalances() {
|
|
|
28
28
|
if (walletNetworks)
|
|
29
29
|
useBalanceStore.getState().initSortingBalances(walletNetworks);
|
|
30
30
|
}, [walletNetwokrsString]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
return () => {
|
|
33
|
+
useBalanceStore.getState().cleanupSortingBalances();
|
|
34
|
+
};
|
|
35
|
+
}, []);
|
|
31
36
|
const lastBalancesRef = useRef(null);
|
|
32
37
|
const resolvedBalances = useBalanceStore(selectResolvedSortingBalances);
|
|
33
38
|
const isLoading = useBalanceStore(s => s.sortingDataIsLoading);
|
|
39
|
+
const partialPublished = useBalanceStore(s => s.partialPublished);
|
|
34
40
|
if (resolvedBalances != null && Object.keys(resolvedBalances).length > 0) {
|
|
35
41
|
lastBalancesRef.current = resolvedBalances;
|
|
36
42
|
}
|
|
37
43
|
const result = resolvedBalances === null && isLoading ? lastBalancesRef.current : resolvedBalances;
|
|
38
|
-
return useMemo(() => ({ isLoading, balances: result }), [result, isLoading]);
|
|
44
|
+
return useMemo(() => ({ isLoading, balances: result, partialPublished }), [result, isLoading, partialPublished]);
|
|
39
45
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
export function useConnectors({ featuredProviders, filteredProviders, searchValue, recentConnectors, }) {
|
|
3
|
+
const featuredConnectors = useMemo(() => featuredProviders
|
|
4
|
+
.filter(g => g.availableWalletsForConnect && g.availableWalletsForConnect?.length > 0)
|
|
5
|
+
.map((provider) => provider.availableWalletsForConnect
|
|
6
|
+
?.filter(v => searchValue ? v.name.toLowerCase().includes(searchValue.toLowerCase()) : true)
|
|
7
|
+
.map((connector) => ({ ...connector, providerName: provider.name })))
|
|
8
|
+
.flat(), [featuredProviders, searchValue]);
|
|
9
|
+
const hiddenConnectors = useMemo(() => featuredProviders
|
|
10
|
+
.filter(g => g.availableHiddenWalletsForConnect && g.availableHiddenWalletsForConnect?.length > 0)
|
|
11
|
+
.map((provider) => provider.availableHiddenWalletsForConnect
|
|
12
|
+
?.filter(v => (searchValue ? v.name.toLowerCase().includes(searchValue.toLowerCase()) : true) &&
|
|
13
|
+
!featuredWalletsIds.includes(v.id.toLowerCase()))
|
|
14
|
+
.map((connector) => ({ ...connector, providerName: provider.name, isHidden: true })))
|
|
15
|
+
.flat(), [featuredProviders, searchValue]);
|
|
16
|
+
const initialConnectors = useMemo(() => {
|
|
17
|
+
return removeDuplicatesWithKey([...featuredConnectors, ...hiddenConnectors]
|
|
18
|
+
.sort((a, b) => sortRecentConnectors(a, b, recentConnectors)), 'name');
|
|
19
|
+
}, [featuredConnectors, hiddenConnectors, searchValue?.length, recentConnectors]);
|
|
20
|
+
return {
|
|
21
|
+
featuredConnectors,
|
|
22
|
+
hiddenConnectors,
|
|
23
|
+
initialConnectors,
|
|
24
|
+
featuredProviders,
|
|
25
|
+
filteredProviders,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const featuredWalletsIds = [
|
|
29
|
+
'metamask',
|
|
30
|
+
'argent',
|
|
31
|
+
'rainbow',
|
|
32
|
+
'bitkeep',
|
|
33
|
+
'okx-wallet',
|
|
34
|
+
];
|
|
35
|
+
function removeDuplicatesWithKey(arr, key) {
|
|
36
|
+
const countMap = {};
|
|
37
|
+
// First pass: Count occurrences of each unique key.
|
|
38
|
+
arr.forEach(item => {
|
|
39
|
+
const identifier = item[key];
|
|
40
|
+
countMap[identifier] = (countMap[identifier] || 0) + 1;
|
|
41
|
+
});
|
|
42
|
+
// Second pass: Create a new array with one instance of each object.
|
|
43
|
+
const unique = [];
|
|
44
|
+
const seen = new Set();
|
|
45
|
+
arr.forEach(item => {
|
|
46
|
+
const identifier = item[key];
|
|
47
|
+
if (!seen.has(identifier)) {
|
|
48
|
+
seen.add(identifier);
|
|
49
|
+
// Add a property 'duplicateCount' to indicate extra duplicates found.
|
|
50
|
+
unique.push({
|
|
51
|
+
...item,
|
|
52
|
+
isMultiChain: countMap[identifier] > 1
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return unique;
|
|
57
|
+
}
|
|
58
|
+
export function sortRecentConnectors(a, b, recentConnectors) {
|
|
59
|
+
function getIndex(c) {
|
|
60
|
+
const idx = recentConnectors?.findIndex(v => v.connectorName === c.name);
|
|
61
|
+
return idx === -1 ? Infinity : idx;
|
|
62
|
+
}
|
|
63
|
+
const indexA = getIndex(a);
|
|
64
|
+
const indexB = getIndex(b);
|
|
65
|
+
if (indexA !== indexB) {
|
|
66
|
+
return indexA - indexB;
|
|
67
|
+
}
|
|
68
|
+
if (a.type && b.type) {
|
|
69
|
+
return a.type.localeCompare(b.type);
|
|
70
|
+
}
|
|
71
|
+
return 0;
|
|
72
|
+
}
|