@daimo/pay 1.19.0 → 1.19.2
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/build/package.json.js +2 -2
- package/build/src/components/DaimoPayModal/index.js +17 -3
- package/build/src/components/DaimoPayModal/index.js.map +1 -1
- package/build/src/components/Pages/SelectExchange/index.js +20 -5
- package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
- package/build/src/components/Pages/SelectMethod/index.js +7 -4
- package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
- package/build/src/hooks/useConnectors.js +12 -1
- package/build/src/hooks/useConnectors.js.map +1 -1
- package/build/src/hooks/usePaymentState.js +4 -1
- package/build/src/hooks/usePaymentState.js.map +1 -1
- package/build/src/wallets/useWallets.js +1 -0
- package/build/src/wallets/useWallets.js.map +1 -1
- package/package.json +2 -2
- package/build/connectkit/package.json.js +0 -117
- package/build/connectkit/package.json.js.map +0 -1
- package/build/connectkit/src/assets/MobileWithLogos.js +0 -329
- package/build/connectkit/src/assets/MobileWithLogos.js.map +0 -1
- package/build/connectkit/src/assets/ScanIconWithLogos.js +0 -243
- package/build/connectkit/src/assets/ScanIconWithLogos.js.map +0 -1
- package/build/connectkit/src/assets/browsers.js +0 -969
- package/build/connectkit/src/assets/browsers.js.map +0 -1
- package/build/connectkit/src/assets/chains.js +0 -648
- package/build/connectkit/src/assets/chains.js.map +0 -1
- package/build/connectkit/src/assets/coins.js +0 -43
- package/build/connectkit/src/assets/coins.js.map +0 -1
- package/build/connectkit/src/assets/icons.js +0 -273
- package/build/connectkit/src/assets/icons.js.map +0 -1
- package/build/connectkit/src/assets/logos.js +0 -1620
- package/build/connectkit/src/assets/logos.js.map +0 -1
- package/build/connectkit/src/assets/wave.js +0 -46
- package/build/connectkit/src/assets/wave.js.map +0 -1
- package/build/connectkit/src/components/Common/Alert/index.js +0 -13
- package/build/connectkit/src/components/Common/Alert/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Alert/styles.js +0 -55
- package/build/connectkit/src/components/Common/Alert/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js +0 -71
- package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +0 -1
- package/build/connectkit/src/components/Common/AmountInput/index.js +0 -159
- package/build/connectkit/src/components/Common/AmountInput/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Avatar/index.js +0 -78
- package/build/connectkit/src/components/Common/Avatar/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Avatar/styles.js +0 -54
- package/build/connectkit/src/components/Common/Avatar/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/BrowserIcon/index.js +0 -29
- package/build/connectkit/src/components/Common/BrowserIcon/index.js.map +0 -1
- package/build/connectkit/src/components/Common/BrowserIcon/styles.js +0 -20
- package/build/connectkit/src/components/Common/BrowserIcon/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/Button/index.js +0 -144
- package/build/connectkit/src/components/Common/Button/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Button/styles.js +0 -287
- package/build/connectkit/src/components/Common/Button/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/Chain/index.js +0 -141
- package/build/connectkit/src/components/Common/Chain/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Chain/styles.js +0 -90
- package/build/connectkit/src/components/Common/Chain/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/ChainSelectList/index.js +0 -250
- package/build/connectkit/src/components/Common/ChainSelectList/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ChainSelectList/styles.js +0 -226
- package/build/connectkit/src/components/Common/ChainSelectList/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/CircleTimer.js +0 -92
- package/build/connectkit/src/components/Common/CircleTimer.js.map +0 -1
- package/build/connectkit/src/components/Common/ConnectorList/index.js +0 -120
- package/build/connectkit/src/components/Common/ConnectorList/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ConnectorList/styles.js +0 -344
- package/build/connectkit/src/components/Common/ConnectorList/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +0 -78
- package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +0 -1
- package/build/connectkit/src/components/Common/CopyToClipboard/index.js +0 -33
- package/build/connectkit/src/components/Common/CopyToClipboard/index.js.map +0 -1
- package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js +0 -128
- package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +0 -1
- package/build/connectkit/src/components/Common/CustomQRCode/index.js +0 -71
- package/build/connectkit/src/components/Common/CustomQRCode/index.js.map +0 -1
- package/build/connectkit/src/components/Common/CustomQRCode/styles.js +0 -139
- package/build/connectkit/src/components/Common/CustomQRCode/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/FitText/index.js +0 -34
- package/build/connectkit/src/components/Common/FitText/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Modal/index.js +0 -523
- package/build/connectkit/src/components/Common/Modal/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Modal/styles.js +0 -665
- package/build/connectkit/src/components/Common/Modal/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/OptionsList/index.js +0 -145
- package/build/connectkit/src/components/Common/OptionsList/index.js.map +0 -1
- package/build/connectkit/src/components/Common/OptionsList/styles.js +0 -138
- package/build/connectkit/src/components/Common/OptionsList/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/OrderHeader/index.js +0 -192
- package/build/connectkit/src/components/Common/OrderHeader/index.js.map +0 -1
- package/build/connectkit/src/components/Common/PaymentBreakdown/index.js +0 -70
- package/build/connectkit/src/components/Common/PaymentBreakdown/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Portal/index.js +0 -30
- package/build/connectkit/src/components/Common/Portal/index.js.map +0 -1
- package/build/connectkit/src/components/Common/PoweredByFooter/index.js +0 -66
- package/build/connectkit/src/components/Common/PoweredByFooter/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ScrollArea/index.js +0 -120
- package/build/connectkit/src/components/Common/ScrollArea/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ScrollArea/styles.js +0 -169
- package/build/connectkit/src/components/Common/ScrollArea/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js +0 -96
- package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Spinner/index.js +0 -64
- package/build/connectkit/src/components/Common/Spinner/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Spinner/styles.js +0 -22
- package/build/connectkit/src/components/Common/Spinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/SwitchButton/index.js +0 -43
- package/build/connectkit/src/components/Common/SwitchButton/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ThemedButton/index.js +0 -46
- package/build/connectkit/src/components/Common/ThemedButton/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ThemedButton/styles.js +0 -152
- package/build/connectkit/src/components/Common/ThemedButton/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/TokenChainLogo/index.js +0 -62
- package/build/connectkit/src/components/Common/TokenChainLogo/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Tooltip/index.js +0 -129
- package/build/connectkit/src/components/Common/Tooltip/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Tooltip/styles.js +0 -81
- package/build/connectkit/src/components/Common/Tooltip/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/WalletChainLogo/index.js +0 -31
- package/build/connectkit/src/components/Common/WalletChainLogo/index.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayButton/index.js +0 -197
- package/build/connectkit/src/components/DaimoPayButton/index.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayButton/styles.js +0 -50
- package/build/connectkit/src/components/DaimoPayButton/styles.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js +0 -68
- package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js +0 -335
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js +0 -131
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js +0 -99
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayModal/index.js +0 -462
- package/build/connectkit/src/components/DaimoPayModal/index.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +0 -25
- package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +0 -1
- package/build/connectkit/src/components/Pages/About/graphics.js +0 -853
- package/build/connectkit/src/components/Pages/About/graphics.js.map +0 -1
- package/build/connectkit/src/components/Pages/About/index.js +0 -222
- package/build/connectkit/src/components/Pages/About/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/About/styles.js +0 -140
- package/build/connectkit/src/components/Pages/About/styles.js.map +0 -1
- package/build/connectkit/src/components/Pages/Confirmation/index.js +0 -128
- package/build/connectkit/src/components/Pages/Confirmation/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Connectors/index.js +0 -28
- package/build/connectkit/src/components/Pages/Connectors/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/DownloadApp/index.js +0 -35
- package/build/connectkit/src/components/Pages/DownloadApp/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Error/index.js +0 -57
- package/build/connectkit/src/components/Pages/Error/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/MobileConnectors/index.js +0 -65
- package/build/connectkit/src/components/Pages/MobileConnectors/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/MobileConnectors/styles.js +0 -64
- package/build/connectkit/src/components/Pages/MobileConnectors/styles.js.map +0 -1
- package/build/connectkit/src/components/Pages/Onboarding/index.js +0 -34
- package/build/connectkit/src/components/Pages/Onboarding/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Onboarding/styles.js +0 -229
- package/build/connectkit/src/components/Pages/Onboarding/styles.js.map +0 -1
- package/build/connectkit/src/components/Pages/PayWithToken/index.js +0 -157
- package/build/connectkit/src/components/Pages/PayWithToken/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectAmount/index.js +0 -24
- package/build/connectkit/src/components/Pages/SelectAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js +0 -79
- package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js +0 -72
- package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectExchange/index.js +0 -41
- package/build/connectkit/src/components/Pages/SelectExchange/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js +0 -80
- package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectMethod/index.js +0 -230
- package/build/connectkit/src/components/Pages/SelectMethod/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectToken/index.js +0 -97
- package/build/connectkit/src/components/Pages/SelectToken/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js +0 -66
- package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectWalletChain/index.js +0 -55
- package/build/connectkit/src/components/Pages/SelectWalletChain/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectZKP/index.js +0 -41
- package/build/connectkit/src/components/Pages/SelectZKP/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js +0 -94
- package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js +0 -92
- package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js +0 -24
- package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SwitchNetworks/index.js +0 -45
- package/build/connectkit/src/components/Pages/SwitchNetworks/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js +0 -503
- package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/WaitingExternal/index.js +0 -89
- package/build/connectkit/src/components/Pages/WaitingExternal/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/WaitingWallet/index.js +0 -49
- package/build/connectkit/src/components/Pages/WaitingWallet/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/CircleSpinner/index.js +0 -104
- package/build/connectkit/src/components/Spinners/CircleSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js +0 -117
- package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js +0 -29
- package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js +0 -68
- package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js +0 -66
- package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js +0 -24
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js +0 -40
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js +0 -37
- package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/styles.js +0 -32
- package/build/connectkit/src/components/Spinners/styles.js.map +0 -1
- package/build/connectkit/src/constants/defaultTheme.js +0 -6
- package/build/connectkit/src/constants/defaultTheme.js.map +0 -1
- package/build/connectkit/src/constants/routes.js +0 -32
- package/build/connectkit/src/constants/routes.js.map +0 -1
- package/build/connectkit/src/defaultConfig.js +0 -63
- package/build/connectkit/src/defaultConfig.js.map +0 -1
- package/build/connectkit/src/defaultConnectors.js +0 -37
- package/build/connectkit/src/defaultConnectors.js.map +0 -1
- package/build/connectkit/src/hooks/useChainIsSupported.js +0 -10
- package/build/connectkit/src/hooks/useChainIsSupported.js.map +0 -1
- package/build/connectkit/src/hooks/useChains.js +0 -10
- package/build/connectkit/src/hooks/useChains.js.map +0 -1
- package/build/connectkit/src/hooks/useConnect.js +0 -61
- package/build/connectkit/src/hooks/useConnect.js.map +0 -1
- package/build/connectkit/src/hooks/useConnectCallback.js +0 -21
- package/build/connectkit/src/hooks/useConnectCallback.js.map +0 -1
- package/build/connectkit/src/hooks/useConnectors.js +0 -9
- package/build/connectkit/src/hooks/useConnectors.js.map +0 -1
- package/build/connectkit/src/hooks/useDaimoPay.js +0 -107
- package/build/connectkit/src/hooks/useDaimoPay.js.map +0 -1
- package/build/connectkit/src/hooks/useDaimoPayStatus.js +0 -12
- package/build/connectkit/src/hooks/useDaimoPayStatus.js.map +0 -1
- package/build/connectkit/src/hooks/useDaimoPayUI.js +0 -15
- package/build/connectkit/src/hooks/useDaimoPayUI.js.map +0 -1
- package/build/connectkit/src/hooks/useDepositAddressOptions.js +0 -35
- package/build/connectkit/src/hooks/useDepositAddressOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useEnsFallbackConfig.js +0 -16
- package/build/connectkit/src/hooks/useEnsFallbackConfig.js.map +0 -1
- package/build/connectkit/src/hooks/useExternalPaymentOptions.js +0 -64
- package/build/connectkit/src/hooks/useExternalPaymentOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useFitText.js +0 -133
- package/build/connectkit/src/hooks/useFitText.js.map +0 -1
- package/build/connectkit/src/hooks/useFocusTrap.js +0 -53
- package/build/connectkit/src/hooks/useFocusTrap.js.map +0 -1
- package/build/connectkit/src/hooks/useIsMobile.js +0 -11
- package/build/connectkit/src/hooks/useIsMobile.js.map +0 -1
- package/build/connectkit/src/hooks/useIsMounted.js +0 -10
- package/build/connectkit/src/hooks/useIsMounted.js.map +0 -1
- package/build/connectkit/src/hooks/useLastConnector.js +0 -24
- package/build/connectkit/src/hooks/useLastConnector.js.map +0 -1
- package/build/connectkit/src/hooks/useLocales.js +0 -60
- package/build/connectkit/src/hooks/useLocales.js.map +0 -1
- package/build/connectkit/src/hooks/useLockBodyScroll.js +0 -47
- package/build/connectkit/src/hooks/useLockBodyScroll.js.map +0 -1
- package/build/connectkit/src/hooks/useOrderUsdLimits.js +0 -24
- package/build/connectkit/src/hooks/useOrderUsdLimits.js.map +0 -1
- package/build/connectkit/src/hooks/usePayContext.js +0 -11
- package/build/connectkit/src/hooks/usePayContext.js.map +0 -1
- package/build/connectkit/src/hooks/usePaymentState.js +0 -376
- package/build/connectkit/src/hooks/usePaymentState.js.map +0 -1
- package/build/connectkit/src/hooks/usePrevious.js +0 -13
- package/build/connectkit/src/hooks/usePrevious.js.map +0 -1
- package/build/connectkit/src/hooks/useSolanaPaymentOptions.js +0 -40
- package/build/connectkit/src/hooks/useSolanaPaymentOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useTokenOptions.js +0 -152
- package/build/connectkit/src/hooks/useTokenOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useUntronAvailability.js +0 -32
- package/build/connectkit/src/hooks/useUntronAvailability.js.map +0 -1
- package/build/connectkit/src/hooks/useWalletPaymentOptions.js +0 -97
- package/build/connectkit/src/hooks/useWalletPaymentOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useWindowSize.js +0 -23
- package/build/connectkit/src/hooks/useWindowSize.js.map +0 -1
- package/build/connectkit/src/index.js +0 -14
- package/build/connectkit/src/index.js.map +0 -1
- package/build/connectkit/src/localizations/index.js +0 -48
- package/build/connectkit/src/localizations/index.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ar-AE.js +0 -95
- package/build/connectkit/src/localizations/locales/ar-AE.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ca-AD.js +0 -93
- package/build/connectkit/src/localizations/locales/ca-AD.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ee-EE.js +0 -101
- package/build/connectkit/src/localizations/locales/ee-EE.js.map +0 -1
- package/build/connectkit/src/localizations/locales/en-US.js +0 -139
- package/build/connectkit/src/localizations/locales/en-US.js.map +0 -1
- package/build/connectkit/src/localizations/locales/es-ES.js +0 -131
- package/build/connectkit/src/localizations/locales/es-ES.js.map +0 -1
- package/build/connectkit/src/localizations/locales/fa-IR.js +0 -93
- package/build/connectkit/src/localizations/locales/fa-IR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/fr-FR.js +0 -93
- package/build/connectkit/src/localizations/locales/fr-FR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ja-JP.js +0 -93
- package/build/connectkit/src/localizations/locales/ja-JP.js.map +0 -1
- package/build/connectkit/src/localizations/locales/pt-BR.js +0 -101
- package/build/connectkit/src/localizations/locales/pt-BR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ru-RU.js +0 -97
- package/build/connectkit/src/localizations/locales/ru-RU.js.map +0 -1
- package/build/connectkit/src/localizations/locales/tr-TR.js +0 -101
- package/build/connectkit/src/localizations/locales/tr-TR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/vi-VN.js +0 -101
- package/build/connectkit/src/localizations/locales/vi-VN.js.map +0 -1
- package/build/connectkit/src/localizations/locales/zh-CN.js +0 -93
- package/build/connectkit/src/localizations/locales/zh-CN.js.map +0 -1
- package/build/connectkit/src/payment/paymentEffects.js +0 -269
- package/build/connectkit/src/payment/paymentEffects.js.map +0 -1
- package/build/connectkit/src/payment/paymentFsm.js +0 -194
- package/build/connectkit/src/payment/paymentFsm.js.map +0 -1
- package/build/connectkit/src/payment/paymentStore.js +0 -18
- package/build/connectkit/src/payment/paymentStore.js.map +0 -1
- package/build/connectkit/src/payment/paymentUtils.js +0 -10
- package/build/connectkit/src/payment/paymentUtils.js.map +0 -1
- package/build/connectkit/src/provider/DaimoPayProvider.js +0 -293
- package/build/connectkit/src/provider/DaimoPayProvider.js.map +0 -1
- package/build/connectkit/src/provider/PayContext.js +0 -6
- package/build/connectkit/src/provider/PayContext.js.map +0 -1
- package/build/connectkit/src/provider/PaymentProvider.js +0 -29
- package/build/connectkit/src/provider/PaymentProvider.js.map +0 -1
- package/build/connectkit/src/provider/SolanaContextProvider.js +0 -14
- package/build/connectkit/src/provider/SolanaContextProvider.js.map +0 -1
- package/build/connectkit/src/provider/Web3ContextProvider.js +0 -36
- package/build/connectkit/src/provider/Web3ContextProvider.js.map +0 -1
- package/build/connectkit/src/stateStore.js +0 -36
- package/build/connectkit/src/stateStore.js.map +0 -1
- package/build/connectkit/src/styles/defaultTheme.js +0 -80
- package/build/connectkit/src/styles/defaultTheme.js.map +0 -1
- package/build/connectkit/src/styles/index.js +0 -313
- package/build/connectkit/src/styles/index.js.map +0 -1
- package/build/connectkit/src/styles/styled/index.js +0 -6
- package/build/connectkit/src/styles/styled/index.js.map +0 -1
- package/build/connectkit/src/styles/themes/base.js +0 -141
- package/build/connectkit/src/styles/themes/base.js.map +0 -1
- package/build/connectkit/src/styles/themes/index.js +0 -13
- package/build/connectkit/src/styles/themes/index.js.map +0 -1
- package/build/connectkit/src/styles/themes/midnight.js +0 -76
- package/build/connectkit/src/styles/themes/midnight.js.map +0 -1
- package/build/connectkit/src/styles/themes/minimal.js +0 -96
- package/build/connectkit/src/styles/themes/minimal.js.map +0 -1
- package/build/connectkit/src/styles/themes/nouns.js +0 -81
- package/build/connectkit/src/styles/themes/nouns.js.map +0 -1
- package/build/connectkit/src/styles/themes/retro.js +0 -106
- package/build/connectkit/src/styles/themes/retro.js.map +0 -1
- package/build/connectkit/src/styles/themes/rounded.js +0 -106
- package/build/connectkit/src/styles/themes/rounded.js.map +0 -1
- package/build/connectkit/src/styles/themes/soft.js +0 -71
- package/build/connectkit/src/styles/themes/soft.js.map +0 -1
- package/build/connectkit/src/styles/themes/web95.js +0 -132
- package/build/connectkit/src/styles/themes/web95.js.map +0 -1
- package/build/connectkit/src/utils/exports.js +0 -6
- package/build/connectkit/src/utils/exports.js.map +0 -1
- package/build/connectkit/src/utils/format.js +0 -45
- package/build/connectkit/src/utils/format.js.map +0 -1
- package/build/connectkit/src/utils/index.js +0 -42
- package/build/connectkit/src/utils/index.js.map +0 -1
- package/build/connectkit/src/utils/p3.js +0 -15
- package/build/connectkit/src/utils/p3.js.map +0 -1
- package/build/connectkit/src/utils/platform.js +0 -11
- package/build/connectkit/src/utils/platform.js.map +0 -1
- package/build/connectkit/src/utils/polling.js +0 -35
- package/build/connectkit/src/utils/polling.js.map +0 -1
- package/build/connectkit/src/utils/supportUrl.js +0 -16
- package/build/connectkit/src/utils/supportUrl.js.map +0 -1
- package/build/connectkit/src/utils/trpc.js +0 -19
- package/build/connectkit/src/utils/trpc.js.map +0 -1
- package/build/connectkit/src/utils/validateInput.js +0 -16
- package/build/connectkit/src/utils/validateInput.js.map +0 -1
- package/build/connectkit/src/wallets/index.js +0 -21
- package/build/connectkit/src/wallets/index.js.map +0 -1
- package/build/connectkit/src/wallets/useWallets.js +0 -207
- package/build/connectkit/src/wallets/useWallets.js.map +0 -1
- package/build/connectkit/src/wallets/walletConfigs.js +0 -277
- package/build/connectkit/src/wallets/walletConfigs.js.map +0 -1
- package/build/connectkit/src/world-mini-app/WorldPayButton.js +0 -148
- package/build/connectkit/src/world-mini-app/WorldPayButton.js.map +0 -1
- package/build/connectkit/src/world-mini-app/promptWorldPayment.js +0 -59
- package/build/connectkit/src/world-mini-app/promptWorldPayment.js.map +0 -1
- package/build/connectkit/src/world.js +0 -2
- package/build/connectkit/src/world.js.map +0 -1
- package/build/pay-common/src/chain.js +0 -9
- package/build/pay-common/src/chain.js.map +0 -1
- package/build/src/assets/coins.js +0 -43
- package/build/src/assets/coins.js.map +0 -1
- package/build/src/components/Common/CopyToClipboard/index.js +0 -33
- package/build/src/components/Common/CopyToClipboard/index.js.map +0 -1
- package/build/src/components/Pages/DownloadApp/index.js +0 -35
- package/build/src/components/Pages/DownloadApp/index.js.map +0 -1
- package/build/types-20835014.d.ts +0 -68
package/build/package.json.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@daimo/pay";
|
|
2
|
-
var version = "1.19.
|
|
2
|
+
var version = "1.19.2";
|
|
3
3
|
var author = "Daimo";
|
|
4
4
|
var homepage = "https://pay.daimo.com";
|
|
5
5
|
var license = "BSD-2-Clause license";
|
|
@@ -31,7 +31,7 @@ var scripts = {
|
|
|
31
31
|
lint: "eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings=0"
|
|
32
32
|
};
|
|
33
33
|
var dependencies = {
|
|
34
|
-
"@daimo/pay-common": "1.19.
|
|
34
|
+
"@daimo/pay-common": "1.19.2",
|
|
35
35
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
36
36
|
"@solana/wallet-adapter-react": "^0.15.35",
|
|
37
37
|
"@solana/web3.js": "^1.95.4",
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useWallet } from '@solana/wallet-adapter-react';
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
|
-
import { useAccount } from 'wagmi';
|
|
3
|
+
import { useRef, useEffect } from 'react';
|
|
4
|
+
import { useAccount, useConnect } from 'wagmi';
|
|
5
5
|
import { ExternalPaymentOptions, DepositAddressPaymentOptions } from '@daimo/pay-common';
|
|
6
6
|
import { ROUTES } from '../../constants/routes.js';
|
|
7
7
|
import { getAppName } from '../../defaultConfig.js';
|
|
8
8
|
import { useChainIsSupported } from '../../hooks/useChainIsSupported.js';
|
|
9
|
+
import { useConnector } from '../../hooks/useConnectors.js';
|
|
9
10
|
import { useDaimoPay } from '../../hooks/useDaimoPay.js';
|
|
10
11
|
import useIsMobile from '../../hooks/useIsMobile.js';
|
|
11
12
|
import { usePayContext } from '../../hooks/usePayContext.js';
|
|
@@ -81,6 +82,10 @@ const DaimoPayModal = ({
|
|
|
81
82
|
const { connected: isSolanaConnected } = useWallet();
|
|
82
83
|
const chainIsSupported = useChainIsSupported(chain?.id);
|
|
83
84
|
const pendingWallet = useWallet$1(context.pendingConnectorId || "");
|
|
85
|
+
const prioritizedWalletId = paymentState.buttonProps?.prioritizedWalletId;
|
|
86
|
+
const prioritizedConnector = useConnector(prioritizedWalletId ?? "");
|
|
87
|
+
const { connect } = useConnect();
|
|
88
|
+
const hasHandledInitialOpen = useRef(false);
|
|
84
89
|
const closeable = !(context.options?.enforceSupportedChains && isEthConnected && !chainIsSupported);
|
|
85
90
|
const showBackButton = closeable && context.route !== context.uniquePaymentMethodPage && context.route !== ROUTES.SELECT_METHOD && context.route !== ROUTES.CONFIRMATION && context.route !== ROUTES.SELECT_TOKEN && context.route !== ROUTES.ERROR && paymentFsmState !== "error" && paymentFsmState !== "warning";
|
|
86
91
|
const onBack = () => {
|
|
@@ -108,6 +113,7 @@ const DaimoPayModal = ({
|
|
|
108
113
|
} else if (context.route === ROUTES.WAITING_EXTERNAL) {
|
|
109
114
|
setPaymentWaitingMessage(void 0);
|
|
110
115
|
if (isDepositFlow) {
|
|
116
|
+
generatePreviewOrder();
|
|
111
117
|
context.setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta);
|
|
112
118
|
} else {
|
|
113
119
|
setSelectedExternalOption(void 0);
|
|
@@ -266,7 +272,10 @@ const DaimoPayModal = ({
|
|
|
266
272
|
};
|
|
267
273
|
const { isMobile } = useIsMobile();
|
|
268
274
|
useEffect(() => {
|
|
269
|
-
if (!context.open)
|
|
275
|
+
if (!context.open) {
|
|
276
|
+
hasHandledInitialOpen.current = false;
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
270
279
|
if (context.route !== ROUTES.SELECT_METHOD) return;
|
|
271
280
|
const paymentOptions = paymentState.buttonProps?.paymentOptions;
|
|
272
281
|
const hasUniqueOption = paymentOptions && paymentOptions.length === 1;
|
|
@@ -491,6 +500,10 @@ const DaimoPayModal = ({
|
|
|
491
500
|
const solanaOptionsCount = paymentState.solanaPaymentOptions.options?.length ?? 0;
|
|
492
501
|
const isSolanaLoading = paymentState.solanaPaymentOptions.isLoading;
|
|
493
502
|
if ((!hasUniqueOption || isWalletsUniquePaymentOption) && isEthConnected && !isSolanaConnected && (!isMobile || !disableMobileInjector) && !isEvmLoading && evmOptionsCount > 0) {
|
|
503
|
+
if (!hasHandledInitialOpen.current && prioritizedWalletId && prioritizedConnector && connector?.id !== prioritizedWalletId) {
|
|
504
|
+
connect({ connector: prioritizedConnector });
|
|
505
|
+
}
|
|
506
|
+
hasHandledInitialOpen.current = true;
|
|
494
507
|
paymentState.setTokenMode("evm");
|
|
495
508
|
context.setRoute(ROUTES.SELECT_TOKEN, {
|
|
496
509
|
event: "eth_connected_on_open",
|
|
@@ -499,6 +512,7 @@ const DaimoPayModal = ({
|
|
|
499
512
|
address
|
|
500
513
|
});
|
|
501
514
|
} else if ((!hasUniqueOption || isWalletsUniquePaymentOption) && isSolanaConnected && !isEthConnected && !disableMobileInjector && !isSolanaLoading && solanaOptionsCount > 0) {
|
|
515
|
+
hasHandledInitialOpen.current = true;
|
|
502
516
|
paymentState.setTokenMode("solana");
|
|
503
517
|
context.setRoute(ROUTES.SELECT_TOKEN, {
|
|
504
518
|
event: "solana_connected_on_open"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/DaimoPayModal/index.tsx"],"sourcesContent":["import { useWallet } from \"@solana/wallet-adapter-react\";\nimport { useEffect } from \"react\";\nimport { useAccount } from \"wagmi\";\n\nimport {\n DepositAddressPaymentOptions,\n ExternalPaymentOptions,\n} from \"@daimo/pay-common\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { getAppName } from \"../../defaultConfig\";\nimport { useChainIsSupported } from \"../../hooks/useChainIsSupported\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\nimport { CustomTheme, Languages, Mode, Theme } from \"../../types\";\nimport {\n isExternalWallet,\n useWallet as useWalletById,\n} from \"../../wallets/useWallets\";\nimport { walletConfigs } from \"../../wallets/walletConfigs\";\nimport Modal from \"../Common/Modal\";\nimport { DaimoPayThemeProvider } from \"../DaimoPayThemeProvider/DaimoPayThemeProvider\";\nimport About from \"../Pages/About\";\nimport Confirmation from \"../Pages/Confirmation\";\nimport Connectors from \"../Pages/Connectors\";\nimport ErrorPage from \"../Pages/Error\";\nimport MobileConnectors from \"../Pages/MobileConnectors\";\nimport Onboarding from \"../Pages/Onboarding\";\nimport PayWithToken from \"../Pages/PayWithToken\";\nimport SelectAmount from \"../Pages/SelectAmount\";\nimport SelectDepositAddressAmount from \"../Pages/SelectDepositAddressAmount\";\nimport SelectDepositAddressChain from \"../Pages/SelectDepositAddressChain\";\nimport SelectExchange from \"../Pages/SelectExchange\";\nimport SelectExternalAmount from \"../Pages/SelectExternalAmount\";\nimport SelectMethod from \"../Pages/SelectMethod\";\nimport SelectToken from \"../Pages/SelectToken\";\nimport SelectWalletAmount from \"../Pages/SelectWalletAmount\";\nimport SelectWalletChain from \"../Pages/SelectWalletChain\";\nimport SelectZKP from \"../Pages/SelectZKP\";\nimport ConnectorSolana from \"../Pages/Solana/ConnectorSolana\";\nimport PayWithSolanaToken from \"../Pages/Solana/PayWithSolanaToken\";\nimport SelectSolanaAmount from \"../Pages/Solana/SelectSolanaAmount\";\nimport SwitchNetworks from \"../Pages/SwitchNetworks\";\nimport WaitingDepositAddress, {\n beforeLeave as waitingDepositAddressBeforeLeave,\n} from \"../Pages/WaitingDepositAddress\";\nimport WaitingExternal from \"../Pages/WaitingExternal\";\nimport WaitingWallet from \"../Pages/WaitingWallet\";\nimport ConnectUsing from \"./ConnectUsing\";\n\n/** Helper to check if option string corresponds to a specific wallet */\nfunction isWalletOption(option: string): boolean {\n return Object.keys(walletConfigs).some((id) => {\n walletConfigs[id].name === option;\n });\n}\n\nexport const DaimoPayModal: React.FC<{\n mode: Mode;\n theme: Theme;\n customTheme: CustomTheme;\n lang: Languages;\n disableMobileInjector: boolean;\n}> = ({\n mode,\n theme,\n customTheme,\n lang,\n disableMobileInjector,\n}: {\n mode: Mode;\n theme: Theme;\n customTheme: CustomTheme;\n lang: Languages;\n disableMobileInjector: boolean;\n}) => {\n const context = usePayContext();\n const {\n setMode,\n setTheme,\n setCustomTheme,\n setLang,\n setDisableMobileInjector,\n } = context;\n const paymentState = context.paymentState;\n const {\n generatePreviewOrder,\n isDepositFlow,\n setPaymentWaitingMessage,\n setSelectedExternalOption,\n setSelectedTokenOption,\n setSelectedSolanaTokenOption,\n setSelectedDepositAddressOption,\n setSelectedWallet,\n } = paymentState;\n const daimo = useDaimoPay();\n const { paymentState: paymentFsmState, order } = daimo;\n\n const {\n isConnected: isEthConnected,\n connector,\n chain,\n address,\n } = useAccount();\n const { connected: isSolanaConnected } = useWallet();\n const chainIsSupported = useChainIsSupported(chain?.id);\n const pendingWallet = useWalletById(context.pendingConnectorId || \"\");\n\n // if chain is unsupported we enforce a \"switch chain\" prompt\n // closeable is independent of the warning state; warning is handled separately below\n const closeable = !(\n context.options?.enforceSupportedChains &&\n isEthConnected &&\n !chainIsSupported\n );\n\n const showBackButton =\n closeable &&\n context.route !== context.uniquePaymentMethodPage &&\n context.route !== ROUTES.SELECT_METHOD &&\n context.route !== ROUTES.CONFIRMATION &&\n context.route !== ROUTES.SELECT_TOKEN &&\n context.route !== ROUTES.ERROR &&\n paymentFsmState !== \"error\" &&\n paymentFsmState !== \"warning\";\n\n const onBack = () => {\n const meta = { event: \"click-back\" };\n if (context.route === ROUTES.CONNECTORS) {\n context.setRoute(context.uniquePaymentMethodPage, meta);\n } else if (context.route === ROUTES.SELECT_AMOUNT) {\n setSelectedTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n } else if (context.route === ROUTES.SELECT_EXTERNAL_AMOUNT) {\n setSelectedExternalOption(undefined);\n context.setRoute(context.uniquePaymentMethodPage, meta);\n } else if (context.route === ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT) {\n // If Tron is a top-level option and we're on Tron, go back to SELECT_METHOD\n const isTronTopLevel = paymentState.topOptionsOrder.includes(\"Tron\");\n const isTronSelected =\n paymentState.selectedDepositAddressOption?.id ===\n DepositAddressPaymentOptions.TRON_USDT;\n if (isDepositFlow) {\n generatePreviewOrder();\n }\n setSelectedDepositAddressOption(undefined);\n if (isTronTopLevel && isTronSelected) {\n context.setRoute(ROUTES.SELECT_METHOD, meta);\n } else {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);\n }\n } else if (context.route === ROUTES.WAITING_EXTERNAL) {\n setPaymentWaitingMessage(undefined);\n if (isDepositFlow) {\n context.setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta);\n } else {\n setSelectedExternalOption(undefined);\n context.setRoute(context.uniquePaymentMethodPage, meta);\n }\n } else if (context.route === ROUTES.PAY_WITH_TOKEN) {\n if (isDepositFlow) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SELECT_AMOUNT, meta);\n } else {\n setSelectedTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n }\n } else if (context.route === ROUTES.MOBILECONNECTORS) {\n context.setRoute(ROUTES.CONNECTORS, meta);\n } else if (context.route === ROUTES.ONBOARDING) {\n context.setRoute(ROUTES.CONNECTORS, meta);\n } else if (context.route === ROUTES.WAITING_DEPOSIT_ADDRESS) {\n // If Tron is a top-level option and we're on Tron, go back to SELECT_METHOD\n const isTronTopLevel = paymentState.topOptionsOrder.includes(\"Tron\");\n const isTronSelected =\n paymentState.selectedDepositAddressOption?.id ===\n DepositAddressPaymentOptions.TRON_USDT;\n if (isDepositFlow) {\n generatePreviewOrder();\n if (paymentState.selectedDepositAddressOption === undefined) {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);\n } else {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, meta);\n }\n } else {\n setSelectedDepositAddressOption(undefined);\n if (isTronTopLevel && isTronSelected) {\n context.setRoute(ROUTES.SELECT_METHOD, meta);\n } else {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);\n }\n }\n } else if (context.route === ROUTES.WAITING_WALLET) {\n if (isDepositFlow) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n setSelectedWallet(undefined);\n context.setRoute(ROUTES.CONNECTORS, meta);\n }\n } else if (context.route === ROUTES.SOLANA_SELECT_AMOUNT) {\n setSelectedSolanaTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n } else if (context.route === ROUTES.SOLANA_PAY_WITH_TOKEN) {\n if (isDepositFlow) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SOLANA_SELECT_AMOUNT, meta);\n } else {\n setSelectedSolanaTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n }\n } else if (context.route === ROUTES.CONNECT) {\n // For external wallets (World, MiniPay) in deposit mode, go back to amount selection\n if (isDepositFlow && isExternalWallet(pendingWallet)) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n context.setRoute(context.uniquePaymentMethodPage, meta);\n }\n } else {\n context.setRoute(context.uniquePaymentMethodPage, meta);\n }\n };\n\n const pages: Record<ROUTES, React.ReactNode> = {\n [ROUTES.SELECT_METHOD]: <SelectMethod />,\n [ROUTES.SELECT_TOKEN]: <SelectToken />,\n [ROUTES.SELECT_AMOUNT]: <SelectAmount />,\n [ROUTES.SELECT_EXTERNAL_AMOUNT]: <SelectExternalAmount />,\n [ROUTES.SELECT_EXCHANGE]: <SelectExchange />,\n [ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT]: <SelectDepositAddressAmount />,\n [ROUTES.SELECT_WALLET_AMOUNT]: <SelectWalletAmount />,\n [ROUTES.SELECT_WALLET_CHAIN]: <SelectWalletChain />,\n [ROUTES.WAITING_EXTERNAL]: <WaitingExternal />,\n [ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN]: <SelectDepositAddressChain />,\n [ROUTES.WAITING_DEPOSIT_ADDRESS]: <WaitingDepositAddress />,\n [ROUTES.SELECT_ZKP2P]: <SelectZKP />,\n [ROUTES.WAITING_WALLET]: <WaitingWallet />,\n [ROUTES.CONFIRMATION]: <Confirmation />,\n [ROUTES.ERROR]: <ErrorPage />,\n [ROUTES.PAY_WITH_TOKEN]: <PayWithToken />,\n [ROUTES.SOLANA_CONNECTOR]: <ConnectorSolana />,\n [ROUTES.SOLANA_SELECT_AMOUNT]: <SelectSolanaAmount />,\n [ROUTES.SOLANA_PAY_WITH_TOKEN]: <PayWithSolanaToken />,\n // Unused routes. Kept to minimize connectkit merge conflicts.\n [ROUTES.ONBOARDING]: <Onboarding />,\n [ROUTES.ABOUT]: <About />,\n [ROUTES.CONNECTORS]: <Connectors />,\n [ROUTES.MOBILECONNECTORS]: <MobileConnectors />,\n [ROUTES.CONNECT]: <ConnectUsing />,\n [ROUTES.SWITCHNETWORKS]: <SwitchNetworks />,\n };\n\n // Registry of page-level leave guards (hooks that run before navigation)\n // For WAITING_DEPOSIT_ADDRESS, we need to pass trpc and orderId\n const leaveGuards: Partial<Record<ROUTES, () => Promise<boolean> | boolean>> =\n {\n [ROUTES.WAITING_DEPOSIT_ADDRESS]: () =>\n waitingDepositAddressBeforeLeave(context.trpc, order?.id?.toString()),\n };\n\n // Helper to wrap navigation actions with leave guard check\n const guardedAction = async (action: () => void) => {\n const guard = leaveGuards[context.route];\n\n // If no guard exists for current page, proceed with action\n if (!guard) {\n action();\n return;\n }\n\n // Otherwise, call the guard and check if navigation is allowed\n let canProceed = false;\n try {\n canProceed = await guard();\n } catch (error) {\n console.error(\"error in leave guard:\", error);\n return;\n }\n\n if (!canProceed) return;\n\n try {\n action();\n } catch (error) {\n console.error(\"error performing guarded action:\", error);\n return;\n }\n\n // dismiss warning after navigation to avoid intermediate flash\n if (paymentFsmState === \"warning\") {\n try {\n daimo.dismissWarning();\n } catch (error) {\n console.error(\"error dismissing warning:\", error);\n }\n }\n };\n\n function hide() {\n if (isDepositFlow) {\n generatePreviewOrder();\n }\n context.setOpen(false, { event: \"click-close\" });\n }\n\n const goToManualAddressScreen = (eventSuffix: string) => {\n if (paymentState.isDepositFlow) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT);\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, {\n event: `unique_payment_option_deposit_${eventSuffix}`,\n });\n } else {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN);\n context.setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, {\n event: `unique_payment_option_${eventSuffix}`,\n });\n }\n };\n\n const goToExternalScreen = (eventSuffix: string) => {\n if (paymentState.isDepositFlow) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXTERNAL_AMOUNT);\n context.setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, {\n event: `unique_payment_option_${eventSuffix}_deposit`,\n });\n } else {\n context.setUniquePaymentMethodPage(ROUTES.WAITING_EXTERNAL);\n context.setRoute(ROUTES.WAITING_EXTERNAL, {\n event: `unique_payment_option_${eventSuffix}`,\n });\n }\n };\n\n const { isMobile } = useIsMobile();\n\n // Override the first screen upon opening the modal.\n // 1. If paymentOptions has exactly one option, navigate to that screen directly\n // 2. If the user has a wallet already connected upon opening the modal, go\n // straight to the select token screen\n // 3. If the user has no wallet connected upon opening the modal, go to the\n // select method screen\n useEffect(() => {\n if (!context.open) return;\n if (context.route !== ROUTES.SELECT_METHOD) return;\n\n const paymentOptions = paymentState.buttonProps?.paymentOptions;\n const hasUniqueOption = paymentOptions && paymentOptions.length === 1;\n\n if (hasUniqueOption) {\n const option = paymentOptions[0];\n // Handle nested array (wallet list)\n if (Array.isArray(option)) {\n context.setUniquePaymentMethodPage(ROUTES.CONNECTORS);\n context.setRoute(ROUTES.CONNECTORS, {\n event: \"unique_payment_option_wallets\",\n });\n return;\n }\n // Handle single string option\n switch (option) {\n case \"Tron\":\n // Find the Tron option from available deposit address options\n const tronOption = paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.TRON_USDT,\n );\n if (tronOption) {\n setSelectedDepositAddressOption(tronOption);\n goToManualAddressScreen(\"tron\");\n } else if (!paymentState.depositAddressOptions.loading) {\n // Data loaded but option not found, fallback to chain selection\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_tron_fallback\",\n });\n }\n // If still loading, do nothing and wait for next render\n break;\n case \"AllExchanges\":\n // Open exchanges list directly\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXCHANGE);\n context.setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"unique_payment_option_all_exchanges\",\n });\n break;\n case \"AllAddresses\":\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_manual_address\",\n });\n break;\n case \"Base\":\n // Find the Base option from available deposit address options\n const baseOption = paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.BASE,\n );\n if (baseOption) {\n setSelectedDepositAddressOption(baseOption);\n goToManualAddressScreen(\"base\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_base_fallback\",\n });\n }\n break;\n case \"Arbitrum\":\n // Find the Arbitrum option from available deposit address options\n const arbitrumOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.ARBITRUM,\n );\n if (arbitrumOption) {\n setSelectedDepositAddressOption(arbitrumOption);\n goToManualAddressScreen(\"arbitrum\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_arbitrum_fallback\",\n });\n }\n break;\n case \"Optimism\":\n // Find the Optimism option from available deposit address options\n const optimismOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.OP_MAINNET,\n );\n if (optimismOption) {\n setSelectedDepositAddressOption(optimismOption);\n goToManualAddressScreen(\"optimism\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_optimism_fallback\",\n });\n }\n break;\n case \"Polygon\":\n // Find the Polygon option from available deposit address options\n const polygonOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.POLYGON,\n );\n if (polygonOption) {\n setSelectedDepositAddressOption(polygonOption);\n goToManualAddressScreen(\"polygon\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_polygon_fallback\",\n });\n }\n break;\n case \"Ethereum\":\n // Find the Ethereum option from available deposit address options\n const ethereumOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.ETH_L1,\n );\n if (ethereumOption) {\n setSelectedDepositAddressOption(ethereumOption);\n goToManualAddressScreen(\"ethereum\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_ethereum_fallback\",\n });\n }\n break;\n case \"Binance\":\n // Find the Binance option from available exchange options\n const exchangeOptions =\n paymentState.externalPaymentOptions.options.get(\"exchange\");\n const binanceOption = exchangeOptions?.find(\n (option) => option.id === ExternalPaymentOptions.Binance,\n );\n if (binanceOption) {\n setSelectedExternalOption(binanceOption);\n goToExternalScreen(\"binance\");\n } else if (!paymentState.externalPaymentOptions.loading) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXCHANGE);\n context.setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"unique_payment_option_binance_fallback\",\n });\n }\n break;\n case \"Coinbase\":\n // Find the Coinbase option from available exchange options\n const coinbaseExchangeOptions =\n paymentState.externalPaymentOptions.options.get(\"exchange\");\n const coinbaseOption = coinbaseExchangeOptions?.find(\n (option) => option.id === ExternalPaymentOptions.Coinbase,\n );\n if (coinbaseOption) {\n setSelectedExternalOption(coinbaseOption);\n goToExternalScreen(\"coinbase\");\n } else if (!paymentState.externalPaymentOptions.loading) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXCHANGE);\n context.setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"unique_payment_option_coinbase_fallback\",\n });\n }\n break;\n case \"Lemon\":\n // Find the Lemon option from available external options\n const lemonExternalOptions =\n paymentState.externalPaymentOptions.options.get(\"external\");\n const lemonOption = lemonExternalOptions?.find(\n (option) => option.id === ExternalPaymentOptions.Lemon,\n );\n if (lemonOption) {\n setSelectedExternalOption(lemonOption);\n goToExternalScreen(\"lemon\");\n } else if (!paymentState.externalPaymentOptions.loading) {\n // Lemon not found - may not be available in this environment/region\n console.warn(\n \"[DaimoPayModal] Lemon not found in external payment options\",\n );\n context.setUniquePaymentMethodPage(ROUTES.SELECT_METHOD);\n context.setRoute(ROUTES.SELECT_METHOD, {\n event: \"unique_payment_option_lemon_not_found\",\n });\n }\n // If still loading, wait for next render\n break;\n case \"AllWallets\":\n context.setUniquePaymentMethodPage(ROUTES.CONNECTORS);\n context.setRoute(ROUTES.CONNECTORS, {\n event: \"unique_payment_option_wallets\",\n });\n break;\n default:\n // Single wallet options like MiniPay, World, etc\n const singleOption = option;\n if (isWalletOption(singleOption)) {\n const walletId = Object.keys(walletConfigs).find((id) => {\n const wallet = walletConfigs[id];\n const optionLower = singleOption.toLowerCase();\n return (\n wallet.name?.toLowerCase() === optionLower ||\n wallet.shortName?.toLowerCase() === optionLower ||\n wallet.name?.toLowerCase().includes(optionLower) ||\n id.toLowerCase() === optionLower ||\n id.toLowerCase().includes(optionLower)\n );\n });\n if (walletId) {\n const wallet = walletConfigs[walletId];\n paymentState.setSelectedWallet(wallet);\n\n if (paymentState.isDepositFlow) {\n // For deposit mode, route to amount selection first\n context.setUniquePaymentMethodPage(ROUTES.SELECT_WALLET_AMOUNT);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, {\n event: \"single_option_wallet_deposit\",\n wallet: singleOption,\n });\n } else if (!isMobile && wallet.getDaimoPayDeeplink) {\n // On desktop, show QR code for wallet\n context.setPendingConnectorId(walletId);\n context.setUniquePaymentMethodPage(ROUTES.CONNECT);\n context.setRoute(ROUTES.CONNECT, {\n event: \"single_option_wallet_qr\",\n wallet: singleOption,\n });\n } else if (isMobile && wallet.getDaimoPayDeeplink) {\n // On mobile with deeplink, open wallet directly (no internal routing)\n paymentState.openInWalletBrowser(wallet);\n } else {\n // No deeplink - go to connectors to let user connect\n context.setRoute(ROUTES.CONNECTORS, {\n event: \"single_option_wallet\",\n wallet: singleOption,\n });\n }\n } else {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_METHOD);\n }\n } else {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_METHOD);\n }\n break;\n }\n }\n\n const isWalletsUniquePaymentOption =\n hasUniqueOption &&\n (Array.isArray(paymentOptions[0]) || paymentOptions[0] === \"AllWallets\");\n\n // Skip to token selection if exactly one wallet is connected. If both\n // wallets are connected, stay on the SELECT_METHOD screen to allow the\n // user to select which wallet to use\n // If mobile injector is disabled, don't show the connected wallets.\n // If there's a unique payment option, and the unique payment option is not\n // \"AllWallets\" or a wallet list, don't auto-connect the user's wallet.\n const evmOptionsCount =\n paymentState.walletPaymentOptions.options?.length ?? 0;\n const isEvmLoading = paymentState.walletPaymentOptions.isLoading;\n const solanaOptionsCount =\n paymentState.solanaPaymentOptions.options?.length ?? 0;\n const isSolanaLoading = paymentState.solanaPaymentOptions.isLoading;\n if (\n (!hasUniqueOption || isWalletsUniquePaymentOption) &&\n isEthConnected &&\n !isSolanaConnected &&\n (!isMobile || !disableMobileInjector) &&\n !isEvmLoading &&\n evmOptionsCount > 0\n ) {\n paymentState.setTokenMode(\"evm\");\n context.setRoute(ROUTES.SELECT_TOKEN, {\n event: \"eth_connected_on_open\",\n walletId: connector?.id,\n chainId: chain?.id,\n address,\n });\n } else if (\n (!hasUniqueOption || isWalletsUniquePaymentOption) &&\n isSolanaConnected &&\n !isEthConnected &&\n !disableMobileInjector &&\n !isSolanaLoading &&\n solanaOptionsCount > 0\n ) {\n paymentState.setTokenMode(\"solana\");\n context.setRoute(ROUTES.SELECT_TOKEN, {\n event: \"solana_connected_on_open\",\n });\n }\n // Don't include context.route in the dependency array otherwise the user\n // can't go back from the select token screen to the select method screen\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n context.open,\n paymentState.walletPaymentOptions.options,\n paymentState.walletPaymentOptions.isLoading,\n paymentState.solanaPaymentOptions.options,\n paymentState.solanaPaymentOptions.isLoading,\n paymentState.externalPaymentOptions.options,\n paymentState.externalPaymentOptions.loading,\n paymentState.depositAddressOptions.options,\n paymentState.depositAddressOptions.loading,\n address,\n chain?.id,\n connector?.id,\n context.uniquePaymentMethodPage,\n ]);\n\n // If we're on the connect page and the user successfully connects their\n // wallet, go to the select token page\n useEffect(() => {\n if (\n context.route === ROUTES.CONNECT ||\n context.route === ROUTES.CONNECTORS ||\n context.route === ROUTES.MOBILECONNECTORS\n ) {\n if (isEthConnected) {\n paymentState.setTokenMode(\"evm\");\n context.setRoute(ROUTES.SELECT_TOKEN, {\n event: \"connected\",\n walletId: connector?.id,\n chainId: chain?.id,\n address,\n });\n }\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isEthConnected, context.route, connector?.id, chain?.id, address]);\n\n useEffect(() => setMode(mode), [mode, setMode]);\n useEffect(() => setTheme(theme), [theme, setTheme]);\n useEffect(() => setCustomTheme(customTheme), [customTheme, setCustomTheme]);\n useEffect(() => setLang(lang), [lang, setLang]);\n useEffect(\n () => setDisableMobileInjector(disableMobileInjector),\n [disableMobileInjector, setDisableMobileInjector],\n );\n\n useEffect(() => {\n const appName = getAppName();\n if (!appName || !context.open) return;\n\n const title = document.createElement(\"meta\");\n title.setAttribute(\"property\", \"og:title\");\n title.setAttribute(\"content\", appName);\n document.head.prepend(title);\n\n return () => {\n try {\n document.head.removeChild(title);\n } catch {}\n };\n }, [context.open]);\n\n return (\n <DaimoPayThemeProvider theme={theme} customTheme={customTheme} mode={mode}>\n <Modal\n open={context.open}\n pages={pages}\n pageId={context.route}\n onClose={\n closeable && paymentFsmState !== \"warning\"\n ? () => guardedAction(hide)\n : undefined\n }\n onInfo={undefined}\n onBack={showBackButton ? () => guardedAction(onBack) : undefined}\n />\n </DaimoPayThemeProvider>\n );\n};\n"],"names":["useWalletById","ConnectorSolana","Onboarding","Connectors","waitingDepositAddressBeforeLeave","option"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/DaimoPayModal/index.tsx"],"sourcesContent":["import { useWallet } from \"@solana/wallet-adapter-react\";\nimport { useEffect, useRef } from \"react\";\nimport { useAccount, useConnect } from \"wagmi\";\n\nimport {\n DepositAddressPaymentOptions,\n ExternalPaymentOptions,\n} from \"@daimo/pay-common\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { getAppName } from \"../../defaultConfig\";\nimport { useChainIsSupported } from \"../../hooks/useChainIsSupported\";\nimport { useConnector } from \"../../hooks/useConnectors\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\nimport { CustomTheme, Languages, Mode, Theme } from \"../../types\";\nimport {\n isExternalWallet,\n useWallet as useWalletById,\n} from \"../../wallets/useWallets\";\nimport { walletConfigs } from \"../../wallets/walletConfigs\";\nimport Modal from \"../Common/Modal\";\nimport { DaimoPayThemeProvider } from \"../DaimoPayThemeProvider/DaimoPayThemeProvider\";\nimport About from \"../Pages/About\";\nimport Confirmation from \"../Pages/Confirmation\";\nimport Connectors from \"../Pages/Connectors\";\nimport ErrorPage from \"../Pages/Error\";\nimport MobileConnectors from \"../Pages/MobileConnectors\";\nimport Onboarding from \"../Pages/Onboarding\";\nimport PayWithToken from \"../Pages/PayWithToken\";\nimport SelectAmount from \"../Pages/SelectAmount\";\nimport SelectDepositAddressAmount from \"../Pages/SelectDepositAddressAmount\";\nimport SelectDepositAddressChain from \"../Pages/SelectDepositAddressChain\";\nimport SelectExchange from \"../Pages/SelectExchange\";\nimport SelectExternalAmount from \"../Pages/SelectExternalAmount\";\nimport SelectMethod from \"../Pages/SelectMethod\";\nimport SelectToken from \"../Pages/SelectToken\";\nimport SelectWalletAmount from \"../Pages/SelectWalletAmount\";\nimport SelectWalletChain from \"../Pages/SelectWalletChain\";\nimport SelectZKP from \"../Pages/SelectZKP\";\nimport ConnectorSolana from \"../Pages/Solana/ConnectorSolana\";\nimport PayWithSolanaToken from \"../Pages/Solana/PayWithSolanaToken\";\nimport SelectSolanaAmount from \"../Pages/Solana/SelectSolanaAmount\";\nimport SwitchNetworks from \"../Pages/SwitchNetworks\";\nimport WaitingDepositAddress, {\n beforeLeave as waitingDepositAddressBeforeLeave,\n} from \"../Pages/WaitingDepositAddress\";\nimport WaitingExternal from \"../Pages/WaitingExternal\";\nimport WaitingWallet from \"../Pages/WaitingWallet\";\nimport ConnectUsing from \"./ConnectUsing\";\n\n/** Helper to check if option string corresponds to a specific wallet */\nfunction isWalletOption(option: string): boolean {\n return Object.keys(walletConfigs).some((id) => {\n walletConfigs[id].name === option;\n });\n}\n\nexport const DaimoPayModal: React.FC<{\n mode: Mode;\n theme: Theme;\n customTheme: CustomTheme;\n lang: Languages;\n disableMobileInjector: boolean;\n}> = ({\n mode,\n theme,\n customTheme,\n lang,\n disableMobileInjector,\n}: {\n mode: Mode;\n theme: Theme;\n customTheme: CustomTheme;\n lang: Languages;\n disableMobileInjector: boolean;\n}) => {\n const context = usePayContext();\n const {\n setMode,\n setTheme,\n setCustomTheme,\n setLang,\n setDisableMobileInjector,\n } = context;\n const paymentState = context.paymentState;\n const {\n generatePreviewOrder,\n isDepositFlow,\n setPaymentWaitingMessage,\n setSelectedExternalOption,\n setSelectedTokenOption,\n setSelectedSolanaTokenOption,\n setSelectedDepositAddressOption,\n setSelectedWallet,\n } = paymentState;\n const daimo = useDaimoPay();\n const { paymentState: paymentFsmState, order } = daimo;\n\n const {\n isConnected: isEthConnected,\n connector,\n chain,\n address,\n } = useAccount();\n const { connected: isSolanaConnected } = useWallet();\n const chainIsSupported = useChainIsSupported(chain?.id);\n const pendingWallet = useWalletById(context.pendingConnectorId || \"\");\n\n // Get prioritized wallet connector if specified\n const prioritizedWalletId = paymentState.buttonProps?.prioritizedWalletId;\n const prioritizedConnector = useConnector(prioritizedWalletId ?? \"\");\n const { connect } = useConnect();\n\n // Track if we've already handled the initial modal open routing\n // This prevents auto-connecting to prioritized wallet after user navigates away\n const hasHandledInitialOpen = useRef(false);\n\n // if chain is unsupported we enforce a \"switch chain\" prompt\n // closeable is independent of the warning state; warning is handled separately below\n const closeable = !(\n context.options?.enforceSupportedChains &&\n isEthConnected &&\n !chainIsSupported\n );\n\n const showBackButton =\n closeable &&\n context.route !== context.uniquePaymentMethodPage &&\n context.route !== ROUTES.SELECT_METHOD &&\n context.route !== ROUTES.CONFIRMATION &&\n context.route !== ROUTES.SELECT_TOKEN &&\n context.route !== ROUTES.ERROR &&\n paymentFsmState !== \"error\" &&\n paymentFsmState !== \"warning\";\n\n const onBack = () => {\n const meta = { event: \"click-back\" };\n if (context.route === ROUTES.CONNECTORS) {\n context.setRoute(context.uniquePaymentMethodPage, meta);\n } else if (context.route === ROUTES.SELECT_AMOUNT) {\n setSelectedTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n } else if (context.route === ROUTES.SELECT_EXTERNAL_AMOUNT) {\n setSelectedExternalOption(undefined);\n context.setRoute(context.uniquePaymentMethodPage, meta);\n } else if (context.route === ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT) {\n // If Tron is a top-level option and we're on Tron, go back to SELECT_METHOD\n const isTronTopLevel = paymentState.topOptionsOrder.includes(\"Tron\");\n const isTronSelected =\n paymentState.selectedDepositAddressOption?.id ===\n DepositAddressPaymentOptions.TRON_USDT;\n if (isDepositFlow) {\n generatePreviewOrder();\n }\n setSelectedDepositAddressOption(undefined);\n if (isTronTopLevel && isTronSelected) {\n context.setRoute(ROUTES.SELECT_METHOD, meta);\n } else {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);\n }\n } else if (context.route === ROUTES.WAITING_EXTERNAL) {\n setPaymentWaitingMessage(undefined);\n if (isDepositFlow) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta);\n } else {\n setSelectedExternalOption(undefined);\n context.setRoute(context.uniquePaymentMethodPage, meta);\n }\n } else if (context.route === ROUTES.PAY_WITH_TOKEN) {\n if (isDepositFlow) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SELECT_AMOUNT, meta);\n } else {\n setSelectedTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n }\n } else if (context.route === ROUTES.MOBILECONNECTORS) {\n context.setRoute(ROUTES.CONNECTORS, meta);\n } else if (context.route === ROUTES.ONBOARDING) {\n context.setRoute(ROUTES.CONNECTORS, meta);\n } else if (context.route === ROUTES.WAITING_DEPOSIT_ADDRESS) {\n // If Tron is a top-level option and we're on Tron, go back to SELECT_METHOD\n const isTronTopLevel = paymentState.topOptionsOrder.includes(\"Tron\");\n const isTronSelected =\n paymentState.selectedDepositAddressOption?.id ===\n DepositAddressPaymentOptions.TRON_USDT;\n if (isDepositFlow) {\n generatePreviewOrder();\n if (paymentState.selectedDepositAddressOption === undefined) {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);\n } else {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, meta);\n }\n } else {\n setSelectedDepositAddressOption(undefined);\n if (isTronTopLevel && isTronSelected) {\n context.setRoute(ROUTES.SELECT_METHOD, meta);\n } else {\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);\n }\n }\n } else if (context.route === ROUTES.WAITING_WALLET) {\n if (isDepositFlow) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n setSelectedWallet(undefined);\n context.setRoute(ROUTES.CONNECTORS, meta);\n }\n } else if (context.route === ROUTES.SOLANA_SELECT_AMOUNT) {\n setSelectedSolanaTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n } else if (context.route === ROUTES.SOLANA_PAY_WITH_TOKEN) {\n if (isDepositFlow) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SOLANA_SELECT_AMOUNT, meta);\n } else {\n setSelectedSolanaTokenOption(undefined);\n context.setRoute(ROUTES.SELECT_TOKEN, meta);\n }\n } else if (context.route === ROUTES.CONNECT) {\n // For external wallets (World, MiniPay) in deposit mode, go back to amount selection\n if (isDepositFlow && isExternalWallet(pendingWallet)) {\n generatePreviewOrder();\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n context.setRoute(context.uniquePaymentMethodPage, meta);\n }\n } else {\n context.setRoute(context.uniquePaymentMethodPage, meta);\n }\n };\n\n const pages: Record<ROUTES, React.ReactNode> = {\n [ROUTES.SELECT_METHOD]: <SelectMethod />,\n [ROUTES.SELECT_TOKEN]: <SelectToken />,\n [ROUTES.SELECT_AMOUNT]: <SelectAmount />,\n [ROUTES.SELECT_EXTERNAL_AMOUNT]: <SelectExternalAmount />,\n [ROUTES.SELECT_EXCHANGE]: <SelectExchange />,\n [ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT]: <SelectDepositAddressAmount />,\n [ROUTES.SELECT_WALLET_AMOUNT]: <SelectWalletAmount />,\n [ROUTES.SELECT_WALLET_CHAIN]: <SelectWalletChain />,\n [ROUTES.WAITING_EXTERNAL]: <WaitingExternal />,\n [ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN]: <SelectDepositAddressChain />,\n [ROUTES.WAITING_DEPOSIT_ADDRESS]: <WaitingDepositAddress />,\n [ROUTES.SELECT_ZKP2P]: <SelectZKP />,\n [ROUTES.WAITING_WALLET]: <WaitingWallet />,\n [ROUTES.CONFIRMATION]: <Confirmation />,\n [ROUTES.ERROR]: <ErrorPage />,\n [ROUTES.PAY_WITH_TOKEN]: <PayWithToken />,\n [ROUTES.SOLANA_CONNECTOR]: <ConnectorSolana />,\n [ROUTES.SOLANA_SELECT_AMOUNT]: <SelectSolanaAmount />,\n [ROUTES.SOLANA_PAY_WITH_TOKEN]: <PayWithSolanaToken />,\n // Unused routes. Kept to minimize connectkit merge conflicts.\n [ROUTES.ONBOARDING]: <Onboarding />,\n [ROUTES.ABOUT]: <About />,\n [ROUTES.CONNECTORS]: <Connectors />,\n [ROUTES.MOBILECONNECTORS]: <MobileConnectors />,\n [ROUTES.CONNECT]: <ConnectUsing />,\n [ROUTES.SWITCHNETWORKS]: <SwitchNetworks />,\n };\n\n // Registry of page-level leave guards (hooks that run before navigation)\n // For WAITING_DEPOSIT_ADDRESS, we need to pass trpc and orderId\n const leaveGuards: Partial<Record<ROUTES, () => Promise<boolean> | boolean>> =\n {\n [ROUTES.WAITING_DEPOSIT_ADDRESS]: () =>\n waitingDepositAddressBeforeLeave(context.trpc, order?.id?.toString()),\n };\n\n // Helper to wrap navigation actions with leave guard check\n const guardedAction = async (action: () => void) => {\n const guard = leaveGuards[context.route];\n\n // If no guard exists for current page, proceed with action\n if (!guard) {\n action();\n return;\n }\n\n // Otherwise, call the guard and check if navigation is allowed\n let canProceed = false;\n try {\n canProceed = await guard();\n } catch (error) {\n console.error(\"error in leave guard:\", error);\n return;\n }\n\n if (!canProceed) return;\n\n try {\n action();\n } catch (error) {\n console.error(\"error performing guarded action:\", error);\n return;\n }\n\n // dismiss warning after navigation to avoid intermediate flash\n if (paymentFsmState === \"warning\") {\n try {\n daimo.dismissWarning();\n } catch (error) {\n console.error(\"error dismissing warning:\", error);\n }\n }\n };\n\n function hide() {\n if (isDepositFlow) {\n generatePreviewOrder();\n }\n context.setOpen(false, { event: \"click-close\" });\n }\n\n const goToManualAddressScreen = (eventSuffix: string) => {\n if (paymentState.isDepositFlow) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT);\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, {\n event: `unique_payment_option_deposit_${eventSuffix}`,\n });\n } else {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN);\n context.setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, {\n event: `unique_payment_option_${eventSuffix}`,\n });\n }\n };\n\n const goToExternalScreen = (eventSuffix: string) => {\n if (paymentState.isDepositFlow) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXTERNAL_AMOUNT);\n context.setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, {\n event: `unique_payment_option_${eventSuffix}_deposit`,\n });\n } else {\n context.setUniquePaymentMethodPage(ROUTES.WAITING_EXTERNAL);\n context.setRoute(ROUTES.WAITING_EXTERNAL, {\n event: `unique_payment_option_${eventSuffix}`,\n });\n }\n };\n\n const { isMobile } = useIsMobile();\n\n // Override the first screen upon opening the modal.\n // 1. If paymentOptions has exactly one option, navigate to that screen directly\n // 2. If the user has a wallet already connected upon opening the modal, go\n // straight to the select token screen\n // 3. If the user has no wallet connected upon opening the modal, go to the\n // select method screen\n useEffect(() => {\n // Reset the flag when modal closes\n if (!context.open) {\n hasHandledInitialOpen.current = false;\n return;\n }\n if (context.route !== ROUTES.SELECT_METHOD) return;\n\n const paymentOptions = paymentState.buttonProps?.paymentOptions;\n const hasUniqueOption = paymentOptions && paymentOptions.length === 1;\n\n if (hasUniqueOption) {\n const option = paymentOptions[0];\n // Handle nested array (wallet list)\n if (Array.isArray(option)) {\n context.setUniquePaymentMethodPage(ROUTES.CONNECTORS);\n context.setRoute(ROUTES.CONNECTORS, {\n event: \"unique_payment_option_wallets\",\n });\n return;\n }\n // Handle single string option\n switch (option) {\n case \"Tron\":\n // Find the Tron option from available deposit address options\n const tronOption = paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.TRON_USDT,\n );\n if (tronOption) {\n setSelectedDepositAddressOption(tronOption);\n goToManualAddressScreen(\"tron\");\n } else if (!paymentState.depositAddressOptions.loading) {\n // Data loaded but option not found, fallback to chain selection\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_tron_fallback\",\n });\n }\n // If still loading, do nothing and wait for next render\n break;\n case \"AllExchanges\":\n // Open exchanges list directly\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXCHANGE);\n context.setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"unique_payment_option_all_exchanges\",\n });\n break;\n case \"AllAddresses\":\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_manual_address\",\n });\n break;\n case \"Base\":\n // Find the Base option from available deposit address options\n const baseOption = paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.BASE,\n );\n if (baseOption) {\n setSelectedDepositAddressOption(baseOption);\n goToManualAddressScreen(\"base\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_base_fallback\",\n });\n }\n break;\n case \"Arbitrum\":\n // Find the Arbitrum option from available deposit address options\n const arbitrumOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.ARBITRUM,\n );\n if (arbitrumOption) {\n setSelectedDepositAddressOption(arbitrumOption);\n goToManualAddressScreen(\"arbitrum\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_arbitrum_fallback\",\n });\n }\n break;\n case \"Optimism\":\n // Find the Optimism option from available deposit address options\n const optimismOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.OP_MAINNET,\n );\n if (optimismOption) {\n setSelectedDepositAddressOption(optimismOption);\n goToManualAddressScreen(\"optimism\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_optimism_fallback\",\n });\n }\n break;\n case \"Polygon\":\n // Find the Polygon option from available deposit address options\n const polygonOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.POLYGON,\n );\n if (polygonOption) {\n setSelectedDepositAddressOption(polygonOption);\n goToManualAddressScreen(\"polygon\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_polygon_fallback\",\n });\n }\n break;\n case \"Ethereum\":\n // Find the Ethereum option from available deposit address options\n const ethereumOption =\n paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.ETH_L1,\n );\n if (ethereumOption) {\n setSelectedDepositAddressOption(ethereumOption);\n goToManualAddressScreen(\"ethereum\");\n } else if (!paymentState.depositAddressOptions.loading) {\n context.setUniquePaymentMethodPage(\n ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN,\n );\n context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, {\n event: \"unique_payment_option_ethereum_fallback\",\n });\n }\n break;\n case \"Binance\":\n // Find the Binance option from available exchange options\n const exchangeOptions =\n paymentState.externalPaymentOptions.options.get(\"exchange\");\n const binanceOption = exchangeOptions?.find(\n (option) => option.id === ExternalPaymentOptions.Binance,\n );\n if (binanceOption) {\n setSelectedExternalOption(binanceOption);\n goToExternalScreen(\"binance\");\n } else if (!paymentState.externalPaymentOptions.loading) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXCHANGE);\n context.setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"unique_payment_option_binance_fallback\",\n });\n }\n break;\n case \"Coinbase\":\n // Find the Coinbase option from available exchange options\n const coinbaseExchangeOptions =\n paymentState.externalPaymentOptions.options.get(\"exchange\");\n const coinbaseOption = coinbaseExchangeOptions?.find(\n (option) => option.id === ExternalPaymentOptions.Coinbase,\n );\n if (coinbaseOption) {\n setSelectedExternalOption(coinbaseOption);\n goToExternalScreen(\"coinbase\");\n } else if (!paymentState.externalPaymentOptions.loading) {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_EXCHANGE);\n context.setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"unique_payment_option_coinbase_fallback\",\n });\n }\n break;\n case \"Lemon\":\n // Find the Lemon option from available external options\n const lemonExternalOptions =\n paymentState.externalPaymentOptions.options.get(\"external\");\n const lemonOption = lemonExternalOptions?.find(\n (option) => option.id === ExternalPaymentOptions.Lemon,\n );\n if (lemonOption) {\n setSelectedExternalOption(lemonOption);\n goToExternalScreen(\"lemon\");\n } else if (!paymentState.externalPaymentOptions.loading) {\n // Lemon not found - may not be available in this environment/region\n console.warn(\n \"[DaimoPayModal] Lemon not found in external payment options\",\n );\n context.setUniquePaymentMethodPage(ROUTES.SELECT_METHOD);\n context.setRoute(ROUTES.SELECT_METHOD, {\n event: \"unique_payment_option_lemon_not_found\",\n });\n }\n // If still loading, wait for next render\n break;\n case \"AllWallets\":\n context.setUniquePaymentMethodPage(ROUTES.CONNECTORS);\n context.setRoute(ROUTES.CONNECTORS, {\n event: \"unique_payment_option_wallets\",\n });\n break;\n default:\n // Single wallet options like MiniPay, World, etc\n const singleOption = option;\n if (isWalletOption(singleOption)) {\n const walletId = Object.keys(walletConfigs).find((id) => {\n const wallet = walletConfigs[id];\n const optionLower = singleOption.toLowerCase();\n return (\n wallet.name?.toLowerCase() === optionLower ||\n wallet.shortName?.toLowerCase() === optionLower ||\n wallet.name?.toLowerCase().includes(optionLower) ||\n id.toLowerCase() === optionLower ||\n id.toLowerCase().includes(optionLower)\n );\n });\n if (walletId) {\n const wallet = walletConfigs[walletId];\n paymentState.setSelectedWallet(wallet);\n\n if (paymentState.isDepositFlow) {\n // For deposit mode, route to amount selection first\n context.setUniquePaymentMethodPage(ROUTES.SELECT_WALLET_AMOUNT);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, {\n event: \"single_option_wallet_deposit\",\n wallet: singleOption,\n });\n } else if (!isMobile && wallet.getDaimoPayDeeplink) {\n // On desktop, show QR code for wallet\n context.setPendingConnectorId(walletId);\n context.setUniquePaymentMethodPage(ROUTES.CONNECT);\n context.setRoute(ROUTES.CONNECT, {\n event: \"single_option_wallet_qr\",\n wallet: singleOption,\n });\n } else if (isMobile && wallet.getDaimoPayDeeplink) {\n // On mobile with deeplink, open wallet directly (no internal routing)\n paymentState.openInWalletBrowser(wallet);\n } else {\n // No deeplink - go to connectors to let user connect\n context.setRoute(ROUTES.CONNECTORS, {\n event: \"single_option_wallet\",\n wallet: singleOption,\n });\n }\n } else {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_METHOD);\n }\n } else {\n context.setUniquePaymentMethodPage(ROUTES.SELECT_METHOD);\n }\n break;\n }\n }\n\n const isWalletsUniquePaymentOption =\n hasUniqueOption &&\n (Array.isArray(paymentOptions[0]) || paymentOptions[0] === \"AllWallets\");\n\n // Skip to token selection if exactly one wallet is connected. If both\n // wallets are connected, stay on the SELECT_METHOD screen to allow the\n // user to select which wallet to use\n // If mobile injector is disabled, don't show the connected wallets.\n // If there's a unique payment option, and the unique payment option is not\n // \"AllWallets\" or a wallet list, don't auto-connect the user's wallet.\n const evmOptionsCount =\n paymentState.walletPaymentOptions.options?.length ?? 0;\n const isEvmLoading = paymentState.walletPaymentOptions.isLoading;\n const solanaOptionsCount =\n paymentState.solanaPaymentOptions.options?.length ?? 0;\n const isSolanaLoading = paymentState.solanaPaymentOptions.isLoading;\n if (\n (!hasUniqueOption || isWalletsUniquePaymentOption) &&\n isEthConnected &&\n !isSolanaConnected &&\n (!isMobile || !disableMobileInjector) &&\n !isEvmLoading &&\n evmOptionsCount > 0\n ) {\n // Only auto-connect to prioritized wallet on first modal open\n if (\n !hasHandledInitialOpen.current &&\n prioritizedWalletId &&\n prioritizedConnector &&\n connector?.id !== prioritizedWalletId\n ) {\n connect({ connector: prioritizedConnector });\n }\n hasHandledInitialOpen.current = true;\n paymentState.setTokenMode(\"evm\");\n context.setRoute(ROUTES.SELECT_TOKEN, {\n event: \"eth_connected_on_open\",\n walletId: connector?.id,\n chainId: chain?.id,\n address,\n });\n } else if (\n (!hasUniqueOption || isWalletsUniquePaymentOption) &&\n isSolanaConnected &&\n !isEthConnected &&\n !disableMobileInjector &&\n !isSolanaLoading &&\n solanaOptionsCount > 0\n ) {\n hasHandledInitialOpen.current = true;\n paymentState.setTokenMode(\"solana\");\n context.setRoute(ROUTES.SELECT_TOKEN, {\n event: \"solana_connected_on_open\",\n });\n }\n // Don't include context.route in the dependency array otherwise the user\n // can't go back from the select token screen to the select method screen\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n context.open,\n paymentState.walletPaymentOptions.options,\n paymentState.walletPaymentOptions.isLoading,\n paymentState.solanaPaymentOptions.options,\n paymentState.solanaPaymentOptions.isLoading,\n paymentState.externalPaymentOptions.options,\n paymentState.externalPaymentOptions.loading,\n paymentState.depositAddressOptions.options,\n paymentState.depositAddressOptions.loading,\n address,\n chain?.id,\n connector?.id,\n context.uniquePaymentMethodPage,\n ]);\n\n // If we're on the connect page and the user successfully connects their\n // wallet, go to the select token page\n useEffect(() => {\n if (\n context.route === ROUTES.CONNECT ||\n context.route === ROUTES.CONNECTORS ||\n context.route === ROUTES.MOBILECONNECTORS\n ) {\n if (isEthConnected) {\n paymentState.setTokenMode(\"evm\");\n context.setRoute(ROUTES.SELECT_TOKEN, {\n event: \"connected\",\n walletId: connector?.id,\n chainId: chain?.id,\n address,\n });\n }\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isEthConnected, context.route, connector?.id, chain?.id, address]);\n\n useEffect(() => setMode(mode), [mode, setMode]);\n useEffect(() => setTheme(theme), [theme, setTheme]);\n useEffect(() => setCustomTheme(customTheme), [customTheme, setCustomTheme]);\n useEffect(() => setLang(lang), [lang, setLang]);\n useEffect(\n () => setDisableMobileInjector(disableMobileInjector),\n [disableMobileInjector, setDisableMobileInjector],\n );\n\n useEffect(() => {\n const appName = getAppName();\n if (!appName || !context.open) return;\n\n const title = document.createElement(\"meta\");\n title.setAttribute(\"property\", \"og:title\");\n title.setAttribute(\"content\", appName);\n document.head.prepend(title);\n\n return () => {\n try {\n document.head.removeChild(title);\n } catch {}\n };\n }, [context.open]);\n\n return (\n <DaimoPayThemeProvider theme={theme} customTheme={customTheme} mode={mode}>\n <Modal\n open={context.open}\n pages={pages}\n pageId={context.route}\n onClose={\n closeable && paymentFsmState !== \"warning\"\n ? () => guardedAction(hide)\n : undefined\n }\n onInfo={undefined}\n onBack={showBackButton ? () => guardedAction(onBack) : undefined}\n />\n </DaimoPayThemeProvider>\n );\n};\n"],"names":["useWalletById","ConnectorSolana","Onboarding","Connectors","waitingDepositAddressBeforeLeave","option"],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@ const SelectExchange = () => {
|
|
|
10
10
|
const { paymentState, setRoute } = usePayContext();
|
|
11
11
|
const { externalPaymentOptions, setSelectedExternalOption } = paymentState;
|
|
12
12
|
const exchangeOptions = externalPaymentOptions.options.get("exchange");
|
|
13
|
-
|
|
13
|
+
const isLoading = externalPaymentOptions.loading;
|
|
14
|
+
if (!isLoading && !exchangeOptions) {
|
|
14
15
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
15
16
|
/* @__PURE__ */ jsx(OrderHeader, { minified: true }),
|
|
16
17
|
/* @__PURE__ */ jsx(ModalH1, { children: "No Exchange options available" })
|
|
@@ -18,9 +19,16 @@ const SelectExchange = () => {
|
|
|
18
19
|
}
|
|
19
20
|
const paymentOptions = paymentState.buttonProps?.paymentOptions;
|
|
20
21
|
const isAllExchangesOnly = paymentOptions && paymentOptions.length === 1 && paymentOptions[0] === "AllExchanges";
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
let filtered = [];
|
|
23
|
+
if (exchangeOptions) {
|
|
24
|
+
if (isAllExchangesOnly) {
|
|
25
|
+
filtered = exchangeOptions.filter(
|
|
26
|
+
(o) => o.id === ExternalPaymentOptions.Coinbase || o.id === ExternalPaymentOptions.Binance
|
|
27
|
+
);
|
|
28
|
+
} else {
|
|
29
|
+
filtered = exchangeOptions;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
24
32
|
const options = filtered.map((option) => ({
|
|
25
33
|
id: option.id,
|
|
26
34
|
title: option.cta,
|
|
@@ -39,7 +47,14 @@ const SelectExchange = () => {
|
|
|
39
47
|
}));
|
|
40
48
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
41
49
|
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "zkp2p" }),
|
|
42
|
-
/* @__PURE__ */ jsx(
|
|
50
|
+
/* @__PURE__ */ jsx(
|
|
51
|
+
OptionsList,
|
|
52
|
+
{
|
|
53
|
+
requiredSkeletons: 2,
|
|
54
|
+
options,
|
|
55
|
+
isLoading
|
|
56
|
+
}
|
|
57
|
+
)
|
|
43
58
|
] });
|
|
44
59
|
};
|
|
45
60
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectExchange/index.tsx"],"sourcesContent":["import { ExternalPaymentOptions } from \"@daimo/pay-common\";\nimport React from \"react\";\n\nimport { ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst SelectExchange: React.FC = () => {\n const { paymentState, setRoute } = usePayContext();\n const { externalPaymentOptions, setSelectedExternalOption } = paymentState;\n const exchangeOptions = externalPaymentOptions.options.get(\"exchange\");\n\n if (!exchangeOptions) {\n return (\n <PageContent>\n <OrderHeader minified />\n <ModalH1>No Exchange options available</ModalH1>\n </PageContent>\n );\n }\n\n // For the exchange flow with single payment option, we only show the Coinbase and Binance options\n const paymentOptions = paymentState.buttonProps?.paymentOptions;\n const isAllExchangesOnly =\n paymentOptions &&\n paymentOptions.length === 1 &&\n paymentOptions[0] === \"AllExchanges\";\n\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectExchange/index.tsx"],"sourcesContent":["import { ExternalPaymentOptions } from \"@daimo/pay-common\";\nimport React from \"react\";\n\nimport { ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst SelectExchange: React.FC = () => {\n const { paymentState, setRoute } = usePayContext();\n const { externalPaymentOptions, setSelectedExternalOption } = paymentState;\n const exchangeOptions = externalPaymentOptions.options.get(\"exchange\");\n const isLoading = externalPaymentOptions.loading;\n\n // No exchange options available\n if (!isLoading && !exchangeOptions) {\n return (\n <PageContent>\n <OrderHeader minified />\n <ModalH1>No Exchange options available</ModalH1>\n </PageContent>\n );\n }\n\n // For the exchange flow with single \"AllExchanges\" payment option, we only\n // show the Coinbase and Binance options\n const paymentOptions = paymentState.buttonProps?.paymentOptions;\n const isAllExchangesOnly =\n paymentOptions &&\n paymentOptions.length === 1 &&\n paymentOptions[0] === \"AllExchanges\";\n\n let filtered: typeof exchangeOptions = [];\n if (exchangeOptions) {\n if (isAllExchangesOnly) {\n filtered = exchangeOptions.filter(\n (o) =>\n o.id === ExternalPaymentOptions.Coinbase ||\n o.id === ExternalPaymentOptions.Binance,\n );\n } else {\n filtered = exchangeOptions;\n }\n }\n\n const options = filtered.map((option) => ({\n id: option.id,\n title: option.cta,\n icons: [option.logoURI],\n onClick: () => {\n setSelectedExternalOption(option);\n const meta = { event: \"click-option\", option: option.id };\n if (paymentState.isDepositFlow) {\n setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta);\n } else {\n setRoute(ROUTES.WAITING_EXTERNAL, meta);\n }\n },\n disabled: option.disabled,\n subtitle: option.message,\n }));\n\n return (\n <PageContent>\n <OrderHeader minified show=\"zkp2p\" />\n <OptionsList\n requiredSkeletons={2}\n options={options}\n isLoading={isLoading}\n />\n </PageContent>\n );\n};\n\nexport default SelectExchange;\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,iBAA2B,MAAM;AACrC,EAAA,MAAM,EAAE,YAAA,EAAc,QAAS,EAAA,GAAI,aAAc,EAAA,CAAA;AACjD,EAAM,MAAA,EAAE,sBAAwB,EAAA,yBAAA,EAA8B,GAAA,YAAA,CAAA;AAC9D,EAAA,MAAM,eAAkB,GAAA,sBAAA,CAAuB,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,CAAA;AACrE,EAAA,MAAM,YAAY,sBAAuB,CAAA,OAAA,CAAA;AAGzC,EAAI,IAAA,CAAC,SAAa,IAAA,CAAC,eAAiB,EAAA;AAClC,IAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,WAAA,EAAA,EAAY,UAAQ,IAAC,EAAA,CAAA;AAAA,sBACtB,GAAA,CAAC,WAAQ,QAA6B,EAAA,+BAAA,EAAA,CAAA;AAAA,KACxC,EAAA,CAAA,CAAA;AAAA,GAEJ;AAIA,EAAM,MAAA,cAAA,GAAiB,aAAa,WAAa,EAAA,cAAA,CAAA;AACjD,EAAA,MAAM,qBACJ,cACA,IAAA,cAAA,CAAe,WAAW,CAC1B,IAAA,cAAA,CAAe,CAAC,CAAM,KAAA,cAAA,CAAA;AAExB,EAAA,IAAI,WAAmC,EAAC,CAAA;AACxC,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,QAAA,GAAW,eAAgB,CAAA,MAAA;AAAA,QACzB,CAAC,MACC,CAAE,CAAA,EAAA,KAAO,uBAAuB,QAChC,IAAA,CAAA,CAAE,OAAO,sBAAuB,CAAA,OAAA;AAAA,OACpC,CAAA;AAAA,KACK,MAAA;AACL,MAAW,QAAA,GAAA,eAAA,CAAA;AAAA,KACb;AAAA,GACF;AAEA,EAAA,MAAM,OAAU,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,MAAY,MAAA;AAAA,IACxC,IAAI,MAAO,CAAA,EAAA;AAAA,IACX,OAAO,MAAO,CAAA,GAAA;AAAA,IACd,KAAA,EAAO,CAAC,MAAA,CAAO,OAAO,CAAA;AAAA,IACtB,SAAS,MAAM;AACb,MAAA,yBAAA,CAA0B,MAAM,CAAA,CAAA;AAChC,MAAA,MAAM,OAAO,EAAE,KAAA,EAAO,cAAgB,EAAA,MAAA,EAAQ,OAAO,EAAG,EAAA,CAAA;AACxD,MAAA,IAAI,aAAa,aAAe,EAAA;AAC9B,QAAS,QAAA,CAAA,MAAA,CAAO,wBAAwB,IAAI,CAAA,CAAA;AAAA,OACvC,MAAA;AACL,QAAS,QAAA,CAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA,CAAA;AAAA,OACxC;AAAA,KACF;AAAA,IACA,UAAU,MAAO,CAAA,QAAA;AAAA,IACjB,UAAU,MAAO,CAAA,OAAA;AAAA,GACjB,CAAA,CAAA,CAAA;AAEF,EAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,QAAA,EAAQ,IAAC,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA;AAAA,oBACnC,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,iBAAmB,EAAA,CAAA;AAAA,QACnB,OAAA;AAAA,QACA,SAAA;AAAA,OAAA;AAAA,KACF;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -4,7 +4,7 @@ import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
|
4
4
|
import { PageContent } from '../../Common/Modal/styles.js';
|
|
5
5
|
import { DepositAddressPaymentOptions, getAddressContraction } from '@daimo/pay-common';
|
|
6
6
|
import { useWallet } from '@solana/wallet-adapter-react';
|
|
7
|
-
import { useAccount, useDisconnect } from 'wagmi';
|
|
7
|
+
import { useAccount, useDisconnect, useConnections } from 'wagmi';
|
|
8
8
|
import { Ethereum, Solana, Polygon, Base, Tron } from '../../../assets/chains.js';
|
|
9
9
|
import { MetaMask, Trust, Rainbow, Phantom, Rabby, WalletIcon } from '../../../assets/logos.js';
|
|
10
10
|
import useIsMobile from '../../../hooks/useIsMobile.js';
|
|
@@ -34,6 +34,7 @@ function SelectMethod() {
|
|
|
34
34
|
} = useWallet();
|
|
35
35
|
const { setRoute, paymentState, log, disableMobileInjector } = usePayContext();
|
|
36
36
|
const { disconnectAsync } = useDisconnect();
|
|
37
|
+
const connections = useConnections();
|
|
37
38
|
const { externalPaymentOptions, senderEnsName, topOptionsOrder } = paymentState;
|
|
38
39
|
const showConnectedEth = isEthConnected && (!isMobile || !disableMobileInjector);
|
|
39
40
|
const showConnectedSolana = isSolanaConnected && (!isMobile || !disableMobileInjector);
|
|
@@ -135,7 +136,9 @@ function SelectMethod() {
|
|
|
135
136
|
title: isEthConnected || isSolanaConnected ? locales.payWithAnotherWallet : locales.payWithWallet,
|
|
136
137
|
icons: getBestUnconnectedWalletIcons(connector, isMobile, walletOrder),
|
|
137
138
|
onClick: async () => {
|
|
138
|
-
|
|
139
|
+
for (const connection of connections) {
|
|
140
|
+
await disconnectAsync({ connector: connection.connector });
|
|
141
|
+
}
|
|
139
142
|
await disconnectSolana();
|
|
140
143
|
setRoute(ROUTES.CONNECTORS);
|
|
141
144
|
}
|
|
@@ -234,7 +237,7 @@ function SelectMethod() {
|
|
|
234
237
|
/* @__PURE__ */ jsx(
|
|
235
238
|
OptionsList,
|
|
236
239
|
{
|
|
237
|
-
requiredSkeletons:
|
|
240
|
+
requiredSkeletons: 3,
|
|
238
241
|
isLoading: externalPaymentOptions.loading,
|
|
239
242
|
options: externalPaymentOptions.loading ? [] : options
|
|
240
243
|
}
|
|
@@ -274,7 +277,7 @@ function getBestUnconnectedWalletIcons(connector, isMobile, walletOrder) {
|
|
|
274
277
|
}
|
|
275
278
|
if (icons.length > 0) return icons;
|
|
276
279
|
}
|
|
277
|
-
const [isRainbow, isTrust, isPhantom,
|
|
280
|
+
const [isRainbow, isTrust, isPhantom, isMetaMask, isRabby] = [
|
|
278
281
|
strippedId?.includes("rainbow"),
|
|
279
282
|
strippedId?.includes("trust"),
|
|
280
283
|
strippedId?.includes("phantom"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectMethod/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport { PageContent } from \"../../Common/Modal/styles\";\n\nimport {\n DepositAddressPaymentOptions,\n getAddressContraction,\n} from \"@daimo/pay-common\";\nimport { useWallet } from \"@solana/wallet-adapter-react\";\nimport { Connector, useAccount, useDisconnect } from \"wagmi\";\nimport { Base, Ethereum, Polygon, Solana, Tron } from \"../../../assets/chains\";\nimport {\n MetaMask,\n Phantom,\n Rabby,\n Rainbow,\n Trust,\n WalletIcon,\n} from \"../../../assets/logos\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { flattenChildren } from \"../../../utils\";\nimport { walletConfigs } from \"../../../wallets/walletConfigs\";\nimport { Option, OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\nimport WalletChainLogo from \"../../Common/WalletChainLogo\";\n\nexport default function SelectMethod() {\n const locales = useLocales();\n const payWithString = flattenChildren(locales.payWith).join(\"\");\n const { isMobile } = useIsMobile();\n\n const {\n address,\n chain,\n isConnected: isEthConnected,\n connector,\n } = useAccount();\n const {\n connected: isSolanaConnected,\n wallet: solanaWallet,\n disconnect: disconnectSolana,\n publicKey,\n } = useWallet();\n const { setRoute, paymentState, log, disableMobileInjector } =\n usePayContext();\n const { disconnectAsync } = useDisconnect();\n\n const { externalPaymentOptions, senderEnsName, topOptionsOrder } =\n paymentState;\n\n // Decide whether to show the connected eth account, solana account, or both.\n // Desktop: Always show connected wallets when available\n // Mobile: Only show connected wallets when mobile injector is enabled (!disableMobileInjector)\n const showConnectedEth =\n isEthConnected && (!isMobile || !disableMobileInjector);\n const showConnectedSolana =\n isSolanaConnected && (!isMobile || !disableMobileInjector);\n\n const getConnectedWalletOptions = () => {\n const showChainLogo = isEthConnected && isSolanaConnected;\n\n const connectedOptions: Option[] = [];\n\n if (showConnectedEth) {\n const ethWalletDisplayName =\n senderEnsName ?? (address ? getAddressContraction(address) : \"wallet\");\n\n // Prefer icon from walletConfigs if there's a name match, otherwise fall back\n // to the connector-provided icon, and finally to the generic WalletIcon.\n let walletIcon: JSX.Element;\n\n const matchedConfig = Object.values(walletConfigs).find((cfg) => {\n if (!cfg.name || !connector?.name) return false;\n const cfgName = cfg.name.toLowerCase();\n const connName = connector.name.toLowerCase();\n return cfgName.includes(connName) || connName.includes(cfgName);\n });\n\n if (matchedConfig?.icon) {\n walletIcon =\n typeof matchedConfig.icon === \"string\" ? (\n <img src={matchedConfig.icon} alt={matchedConfig.name} />\n ) : (\n (matchedConfig.icon as JSX.Element)\n );\n } else if (connector?.icon) {\n walletIcon = (\n <div style={{ borderRadius: \"22.5%\", overflow: \"hidden\" }}>\n <img src={connector.icon} alt={connector.name} />\n </div>\n );\n } else {\n walletIcon = <WalletIcon />;\n }\n\n const connectedEthWalletOption = {\n id: \"connectedWallet\",\n title: `${payWithString} ${ethWalletDisplayName}`,\n icons: [\n <WalletChainLogo\n key=\"eth\"\n walletIcon={walletIcon}\n walletName={connector?.name || \"Wallet\"}\n chainLogo={showChainLogo ? <Ethereum /> : null}\n />,\n ],\n onClick: () => {\n paymentState.setTokenMode(\"evm\");\n setRoute(ROUTES.SELECT_TOKEN, {\n event: \"click-wallet\",\n walletId: connector?.id,\n chainId: chain?.id,\n address: address,\n });\n },\n };\n connectedOptions.push(connectedEthWalletOption);\n }\n\n if (showConnectedSolana) {\n const solWalletDisplayName = getAddressContraction(\n publicKey?.toBase58() ?? \"\",\n );\n\n // Prefer icon from walletConfigs if available\n let solWalletIcon: React.ReactNode;\n const solMatchedConfig = Object.values(walletConfigs).find((cfg) => {\n if (!cfg.name) return false;\n const cfgName = cfg.name.toLowerCase();\n const solName = solanaWallet?.adapter.name.toLowerCase() || \"\";\n return cfgName.includes(solName) || solName.includes(cfgName);\n });\n\n if (solMatchedConfig?.icon) {\n solWalletIcon =\n typeof solMatchedConfig.icon === \"string\" ? (\n <img src={solMatchedConfig.icon} alt={solMatchedConfig.name} />\n ) : (\n (solMatchedConfig.icon as JSX.Element)\n );\n } else if (solanaWallet?.adapter.icon) {\n solWalletIcon = solanaWallet.adapter.icon;\n } else {\n solWalletIcon = <Solana />;\n }\n\n const connectedSolWalletOption = {\n id: \"connectedSolanaWallet\",\n title: `${payWithString} ${solWalletDisplayName}`,\n icons: [\n <WalletChainLogo\n key=\"sol-wallet\"\n walletIcon={solWalletIcon}\n walletName={solanaWallet?.adapter.name || \"Wallet\"}\n chainLogo={showChainLogo && <Solana />}\n />,\n ],\n onClick: () => {\n paymentState.setTokenMode(\"solana\");\n setRoute(ROUTES.SELECT_TOKEN, {\n event: \"click-wallet\",\n walletId: solanaWallet?.adapter.name,\n chainId: \"solana\",\n address: publicKey?.toBase58(),\n });\n },\n };\n\n connectedOptions.push(connectedSolWalletOption);\n }\n\n return connectedOptions;\n };\n\n const connectedWalletOptions = getConnectedWalletOptions();\n\n // Get custom wallet list if specified\n const walletOrder =\n paymentState.externalPaymentOptions.parsedConfig.walletOrder;\n\n const unconnectedWalletOption = {\n id: \"unconnectedWallet\",\n title:\n isEthConnected || isSolanaConnected\n ? locales.payWithAnotherWallet\n : locales.payWithWallet,\n icons: getBestUnconnectedWalletIcons(connector, isMobile, walletOrder),\n onClick: async () => {\n await disconnectAsync();\n await disconnectSolana();\n setRoute(ROUTES.CONNECTORS);\n },\n };\n\n log(\n `[SELECT_METHOD] loading: ${externalPaymentOptions.loading}, options: ${JSON.stringify(\n externalPaymentOptions.options,\n )}`,\n );\n\n // Build categorized options\n type CategorizedOption = {\n id: string;\n title: string;\n subtitle?: string;\n icons: (React.ReactNode | string)[];\n onClick: () => void;\n disabled?: boolean;\n category: string;\n };\n\n const categorizedOptions: CategorizedOption[] = [];\n\n // Connected wallets always appear first\n connectedWalletOptions.forEach((opt) =>\n categorizedOptions.push({ ...opt, category: \"connected\" }),\n );\n\n // Wallet options (unconnected) - only if AllWallets is in topOptionsOrder\n if (topOptionsOrder.includes(\"AllWallets\")) {\n categorizedOptions.push({\n ...unconnectedWalletOption,\n category: \"AllWallets\",\n });\n }\n\n // Exchange options - only if AllExchanges is in topOptionsOrder\n const exchangeOptions = externalPaymentOptions.options.get(\"exchange\") ?? [];\n const showExchangePaymentMethod =\n exchangeOptions.length > 0 && topOptionsOrder.includes(\"AllExchanges\");\n if (showExchangePaymentMethod) {\n categorizedOptions.push({\n id: \"exchange\",\n title: locales.payWithExchange,\n icons: exchangeOptions.slice(0, 3).map((option) => option.logoURI),\n onClick: () => {\n setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"click-option\",\n option: \"exchange\",\n });\n },\n category: \"AllExchanges\",\n });\n }\n\n // Tron option - only if Tron is in topOptionsOrder\n if (topOptionsOrder.includes(\"Tron\")) {\n const tronOption = paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.TRON_USDT,\n );\n if (tronOption) {\n categorizedOptions.push({\n id: \"tron\",\n title: tronOption.id, // Use the actual title like \"USDT on Tron\"\n icons: [tronOption.logoURI],\n onClick: () => {\n paymentState.setSelectedDepositAddressOption(tronOption);\n setRoute(\n paymentState.isDepositFlow\n ? ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT\n : ROUTES.WAITING_DEPOSIT_ADDRESS,\n { event: \"select_tron\" },\n );\n },\n category: \"Tron\",\n });\n }\n }\n\n // Deposit address options - only if AllAddresses is in topOptionsOrder\n if (topOptionsOrder.includes(\"AllAddresses\")) {\n const depositAddressOption = getDepositAddressOption(\n setRoute,\n locales,\n topOptionsOrder.includes(\"Tron\"), // exclude Tron if shown separately\n );\n categorizedOptions.push({\n ...depositAddressOption,\n category: \"AllAddresses\",\n });\n }\n\n // ZKP2P options - only if AllPaymentApps is in topOptionsOrder\n const zkp2pOptions = externalPaymentOptions.options.get(\"zkp2p\") ?? [];\n const showZkp2pPaymentMethod =\n !isMobile &&\n zkp2pOptions.length > 0 &&\n topOptionsOrder.includes(\"AllPaymentApps\");\n if (showZkp2pPaymentMethod) {\n categorizedOptions.push({\n id: \"ZKP2P\",\n title: locales.payViaPaymentApp,\n icons: zkp2pOptions.slice(0, 2).map((option) => option.logoURI),\n onClick: () => {\n setRoute(ROUTES.SELECT_ZKP2P);\n },\n category: \"AllPaymentApps\",\n });\n }\n\n // Sort based on topOptionsOrder, keeping connected wallets first\n const sortedOptions = categorizedOptions.sort((a, b) => {\n // Connected wallets always first\n if (a.category === \"connected\") return -1;\n if (b.category === \"connected\") return 1;\n\n // Then sort by topOptionsOrder\n const aIndex = topOptionsOrder.indexOf(a.category);\n const bIndex = topOptionsOrder.indexOf(b.category);\n\n // If not in order list, put at the end\n if (aIndex === -1 && bIndex === -1) return 0;\n if (aIndex === -1) return 1;\n if (bIndex === -1) return -1;\n\n return aIndex - bIndex;\n });\n\n // Remove category field for final options\n const options = sortedOptions.map(({ category, ...opt }) => opt);\n\n // Order disabled to bottom\n options.sort((a, b) => (a.disabled ? 1 : 0) - (b.disabled ? 1 : 0));\n\n return (\n <PageContent>\n <OrderHeader />\n\n <OptionsList\n requiredSkeletons={isMobile ? 3 : 4}\n isLoading={externalPaymentOptions.loading}\n options={externalPaymentOptions.loading ? [] : options}\n />\n <PoweredByFooter />\n </PageContent>\n );\n}\n\n// Get 3 icons, skipping the one that is already connected\nfunction getBestUnconnectedWalletIcons(\n connector: Connector | undefined,\n isMobile: boolean,\n walletOrder?: string[],\n) {\n const icons: JSX.Element[] = [];\n const strippedId = connector?.id.toLowerCase();\n\n // If custom wallet list is provided, use those wallets\n if (walletOrder && walletOrder.length > 0 && isMobile) {\n const maxIcons = 3;\n for (const walletName of walletOrder) {\n if (icons.length >= maxIcons) break;\n\n // Skip if this wallet is already connected\n if (strippedId?.includes(walletName.toLowerCase())) continue;\n\n // Find wallet config\n const walletId = Object.keys(walletConfigs).find((id) => {\n const wallet = walletConfigs[id];\n const nameLower = walletName.toLowerCase();\n return (\n wallet.name?.toLowerCase().includes(nameLower) ||\n wallet.shortName?.toLowerCase().includes(nameLower) ||\n id.toLowerCase().includes(nameLower)\n );\n });\n\n if (walletId) {\n const wallet = walletConfigs[walletId];\n const icon = wallet.iconConnector || wallet.icon;\n if (icon) {\n icons.push(\n <div\n key={walletId}\n style={{ borderRadius: \"22.5%\", overflow: \"hidden\" }}\n >\n {icon}\n </div>,\n );\n }\n }\n }\n\n if (icons.length > 0) return icons;\n }\n\n // Default icons (fallback)\n const [isRainbow, isTrust, isPhantom, isCoinbase, isMetaMask, isRabby] = [\n strippedId?.includes(\"rainbow\"),\n strippedId?.includes(\"trust\"),\n strippedId?.includes(\"phantom\"),\n strippedId?.includes(\"coinbase\"),\n strippedId?.includes(\"metamask\"),\n strippedId?.includes(\"rabby\"),\n ];\n\n if (isMobile) {\n if (!isMetaMask) icons.push(<MetaMask />);\n if (!isTrust) icons.push(<Trust background />);\n if (!isRainbow && icons.length < 3) icons.push(<Rainbow />);\n } else {\n if (!isMetaMask) icons.push(<MetaMask />);\n if (!isRainbow) icons.push(<Rainbow />);\n if (!isPhantom) icons.push(<Phantom />);\n if (!isRabby && icons.length < 3) icons.push(<Rabby />);\n }\n\n return icons;\n}\n\nfunction getDepositAddressOption(\n setRoute: (route: ROUTES, data?: Record<string, any>) => void,\n locales: ReturnType<typeof useLocales>,\n excludeTron: boolean = false,\n) {\n const icons = excludeTron\n ? [<Ethereum key=\"eth\" />, <Polygon key=\"polygon\" />, <Base key=\"base\" />]\n : [<Ethereum key=\"eth\" />, <Tron key=\"tron\" />, <Base key=\"base\" />];\n\n return {\n id: \"depositAddress\",\n title: locales.payToAddress,\n icons,\n onClick: () => {\n setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN);\n },\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectMethod/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport { PageContent } from \"../../Common/Modal/styles\";\n\nimport {\n DepositAddressPaymentOptions,\n getAddressContraction,\n} from \"@daimo/pay-common\";\nimport { useWallet } from \"@solana/wallet-adapter-react\";\nimport { Connector, useAccount, useConnections, useDisconnect } from \"wagmi\";\nimport { Base, Ethereum, Polygon, Solana, Tron } from \"../../../assets/chains\";\nimport {\n MetaMask,\n Phantom,\n Rabby,\n Rainbow,\n Trust,\n WalletIcon,\n} from \"../../../assets/logos\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { flattenChildren } from \"../../../utils\";\nimport { walletConfigs } from \"../../../wallets/walletConfigs\";\nimport { Option, OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\nimport WalletChainLogo from \"../../Common/WalletChainLogo\";\n\nexport default function SelectMethod() {\n const locales = useLocales();\n const payWithString = flattenChildren(locales.payWith).join(\"\");\n const { isMobile } = useIsMobile();\n\n const {\n address,\n chain,\n isConnected: isEthConnected,\n connector,\n } = useAccount();\n const {\n connected: isSolanaConnected,\n wallet: solanaWallet,\n disconnect: disconnectSolana,\n publicKey,\n } = useWallet();\n const { setRoute, paymentState, log, disableMobileInjector } =\n usePayContext();\n const { disconnectAsync } = useDisconnect();\n const connections = useConnections();\n\n const { externalPaymentOptions, senderEnsName, topOptionsOrder } =\n paymentState;\n\n // Decide whether to show the connected eth account, solana account, or both.\n // Desktop: Always show connected wallets when available\n // Mobile: Only show connected wallets when mobile injector is enabled (!disableMobileInjector)\n const showConnectedEth =\n isEthConnected && (!isMobile || !disableMobileInjector);\n const showConnectedSolana =\n isSolanaConnected && (!isMobile || !disableMobileInjector);\n\n const getConnectedWalletOptions = () => {\n const showChainLogo = isEthConnected && isSolanaConnected;\n\n const connectedOptions: Option[] = [];\n\n if (showConnectedEth) {\n const ethWalletDisplayName =\n senderEnsName ?? (address ? getAddressContraction(address) : \"wallet\");\n\n // Prefer icon from walletConfigs if there's a name match, otherwise fall back\n // to the connector-provided icon, and finally to the generic WalletIcon.\n let walletIcon: JSX.Element;\n\n const matchedConfig = Object.values(walletConfigs).find((cfg) => {\n if (!cfg.name || !connector?.name) return false;\n const cfgName = cfg.name.toLowerCase();\n const connName = connector.name.toLowerCase();\n return cfgName.includes(connName) || connName.includes(cfgName);\n });\n\n if (matchedConfig?.icon) {\n walletIcon =\n typeof matchedConfig.icon === \"string\" ? (\n <img src={matchedConfig.icon} alt={matchedConfig.name} />\n ) : (\n (matchedConfig.icon as JSX.Element)\n );\n } else if (connector?.icon) {\n walletIcon = (\n <div style={{ borderRadius: \"22.5%\", overflow: \"hidden\" }}>\n <img src={connector.icon} alt={connector.name} />\n </div>\n );\n } else {\n walletIcon = <WalletIcon />;\n }\n\n const connectedEthWalletOption = {\n id: \"connectedWallet\",\n title: `${payWithString} ${ethWalletDisplayName}`,\n icons: [\n <WalletChainLogo\n key=\"eth\"\n walletIcon={walletIcon}\n walletName={connector?.name || \"Wallet\"}\n chainLogo={showChainLogo ? <Ethereum /> : null}\n />,\n ],\n onClick: () => {\n paymentState.setTokenMode(\"evm\");\n setRoute(ROUTES.SELECT_TOKEN, {\n event: \"click-wallet\",\n walletId: connector?.id,\n chainId: chain?.id,\n address: address,\n });\n },\n };\n connectedOptions.push(connectedEthWalletOption);\n }\n\n if (showConnectedSolana) {\n const solWalletDisplayName = getAddressContraction(\n publicKey?.toBase58() ?? \"\",\n );\n\n // Prefer icon from walletConfigs if available\n let solWalletIcon: React.ReactNode;\n const solMatchedConfig = Object.values(walletConfigs).find((cfg) => {\n if (!cfg.name) return false;\n const cfgName = cfg.name.toLowerCase();\n const solName = solanaWallet?.adapter.name.toLowerCase() || \"\";\n return cfgName.includes(solName) || solName.includes(cfgName);\n });\n\n if (solMatchedConfig?.icon) {\n solWalletIcon =\n typeof solMatchedConfig.icon === \"string\" ? (\n <img src={solMatchedConfig.icon} alt={solMatchedConfig.name} />\n ) : (\n (solMatchedConfig.icon as JSX.Element)\n );\n } else if (solanaWallet?.adapter.icon) {\n solWalletIcon = solanaWallet.adapter.icon;\n } else {\n solWalletIcon = <Solana />;\n }\n\n const connectedSolWalletOption = {\n id: \"connectedSolanaWallet\",\n title: `${payWithString} ${solWalletDisplayName}`,\n icons: [\n <WalletChainLogo\n key=\"sol-wallet\"\n walletIcon={solWalletIcon}\n walletName={solanaWallet?.adapter.name || \"Wallet\"}\n chainLogo={showChainLogo && <Solana />}\n />,\n ],\n onClick: () => {\n paymentState.setTokenMode(\"solana\");\n setRoute(ROUTES.SELECT_TOKEN, {\n event: \"click-wallet\",\n walletId: solanaWallet?.adapter.name,\n chainId: \"solana\",\n address: publicKey?.toBase58(),\n });\n },\n };\n\n connectedOptions.push(connectedSolWalletOption);\n }\n\n return connectedOptions;\n };\n\n const connectedWalletOptions = getConnectedWalletOptions();\n\n // Get custom wallet list if specified\n const walletOrder =\n paymentState.externalPaymentOptions.parsedConfig.walletOrder;\n\n const unconnectedWalletOption = {\n id: \"unconnectedWallet\",\n title:\n isEthConnected || isSolanaConnected\n ? locales.payWithAnotherWallet\n : locales.payWithWallet,\n icons: getBestUnconnectedWalletIcons(connector, isMobile, walletOrder),\n onClick: async () => {\n // Disconnect all wagmi connections\n for (const connection of connections) {\n await disconnectAsync({ connector: connection.connector });\n }\n await disconnectSolana();\n setRoute(ROUTES.CONNECTORS);\n },\n };\n\n log(\n `[SELECT_METHOD] loading: ${externalPaymentOptions.loading}, options: ${JSON.stringify(\n externalPaymentOptions.options,\n )}`,\n );\n\n // Build categorized options\n type CategorizedOption = {\n id: string;\n title: string;\n subtitle?: string;\n icons: (React.ReactNode | string)[];\n onClick: () => void;\n disabled?: boolean;\n category: string;\n };\n\n const categorizedOptions: CategorizedOption[] = [];\n\n // Connected wallets always appear first\n connectedWalletOptions.forEach((opt) =>\n categorizedOptions.push({ ...opt, category: \"connected\" }),\n );\n\n // Wallet options (unconnected) - only if AllWallets is in topOptionsOrder\n if (topOptionsOrder.includes(\"AllWallets\")) {\n categorizedOptions.push({\n ...unconnectedWalletOption,\n category: \"AllWallets\",\n });\n }\n\n // Exchange options - only if AllExchanges is in topOptionsOrder\n const exchangeOptions = externalPaymentOptions.options.get(\"exchange\") ?? [];\n const showExchangePaymentMethod =\n exchangeOptions.length > 0 && topOptionsOrder.includes(\"AllExchanges\");\n if (showExchangePaymentMethod) {\n categorizedOptions.push({\n id: \"exchange\",\n title: locales.payWithExchange,\n icons: exchangeOptions.slice(0, 3).map((option) => option.logoURI),\n onClick: () => {\n setRoute(ROUTES.SELECT_EXCHANGE, {\n event: \"click-option\",\n option: \"exchange\",\n });\n },\n category: \"AllExchanges\",\n });\n }\n\n // Tron option - only if Tron is in topOptionsOrder\n if (topOptionsOrder.includes(\"Tron\")) {\n const tronOption = paymentState.depositAddressOptions.options?.find(\n (option) => option.id === DepositAddressPaymentOptions.TRON_USDT,\n );\n if (tronOption) {\n categorizedOptions.push({\n id: \"tron\",\n title: tronOption.id, // Use the actual title like \"USDT on Tron\"\n icons: [tronOption.logoURI],\n onClick: () => {\n paymentState.setSelectedDepositAddressOption(tronOption);\n setRoute(\n paymentState.isDepositFlow\n ? ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT\n : ROUTES.WAITING_DEPOSIT_ADDRESS,\n { event: \"select_tron\" },\n );\n },\n category: \"Tron\",\n });\n }\n }\n\n // Deposit address options - only if AllAddresses is in topOptionsOrder\n if (topOptionsOrder.includes(\"AllAddresses\")) {\n const depositAddressOption = getDepositAddressOption(\n setRoute,\n locales,\n topOptionsOrder.includes(\"Tron\"), // exclude Tron if shown separately\n );\n categorizedOptions.push({\n ...depositAddressOption,\n category: \"AllAddresses\",\n });\n }\n\n // ZKP2P options - only if AllPaymentApps is in topOptionsOrder\n const zkp2pOptions = externalPaymentOptions.options.get(\"zkp2p\") ?? [];\n const showZkp2pPaymentMethod =\n !isMobile &&\n zkp2pOptions.length > 0 &&\n topOptionsOrder.includes(\"AllPaymentApps\");\n if (showZkp2pPaymentMethod) {\n categorizedOptions.push({\n id: \"ZKP2P\",\n title: locales.payViaPaymentApp,\n icons: zkp2pOptions.slice(0, 2).map((option) => option.logoURI),\n onClick: () => {\n setRoute(ROUTES.SELECT_ZKP2P);\n },\n category: \"AllPaymentApps\",\n });\n }\n\n // Sort based on topOptionsOrder, keeping connected wallets first\n const sortedOptions = categorizedOptions.sort((a, b) => {\n // Connected wallets always first\n if (a.category === \"connected\") return -1;\n if (b.category === \"connected\") return 1;\n\n // Then sort by topOptionsOrder\n const aIndex = topOptionsOrder.indexOf(a.category);\n const bIndex = topOptionsOrder.indexOf(b.category);\n\n // If not in order list, put at the end\n if (aIndex === -1 && bIndex === -1) return 0;\n if (aIndex === -1) return 1;\n if (bIndex === -1) return -1;\n\n return aIndex - bIndex;\n });\n\n // Remove category field for final options\n const options = sortedOptions.map(({ category, ...opt }) => opt);\n\n // Order disabled to bottom\n options.sort((a, b) => (a.disabled ? 1 : 0) - (b.disabled ? 1 : 0));\n\n return (\n <PageContent>\n <OrderHeader />\n\n <OptionsList\n requiredSkeletons={3}\n isLoading={externalPaymentOptions.loading}\n options={externalPaymentOptions.loading ? [] : options}\n />\n <PoweredByFooter />\n </PageContent>\n );\n}\n\n// Get 3 icons, skipping the one that is already connected\nfunction getBestUnconnectedWalletIcons(\n connector: Connector | undefined,\n isMobile: boolean,\n walletOrder?: string[],\n) {\n const icons: JSX.Element[] = [];\n const strippedId = connector?.id.toLowerCase();\n\n // If custom wallet list is provided, use those wallets\n if (walletOrder && walletOrder.length > 0 && isMobile) {\n const maxIcons = 3;\n for (const walletName of walletOrder) {\n if (icons.length >= maxIcons) break;\n\n // Skip if this wallet is already connected\n if (strippedId?.includes(walletName.toLowerCase())) continue;\n\n // Find wallet config\n const walletId = Object.keys(walletConfigs).find((id) => {\n const wallet = walletConfigs[id];\n const nameLower = walletName.toLowerCase();\n return (\n wallet.name?.toLowerCase().includes(nameLower) ||\n wallet.shortName?.toLowerCase().includes(nameLower) ||\n id.toLowerCase().includes(nameLower)\n );\n });\n\n if (walletId) {\n const wallet = walletConfigs[walletId];\n const icon = wallet.iconConnector || wallet.icon;\n if (icon) {\n icons.push(\n <div\n key={walletId}\n style={{ borderRadius: \"22.5%\", overflow: \"hidden\" }}\n >\n {icon}\n </div>,\n );\n }\n }\n }\n\n if (icons.length > 0) return icons;\n }\n\n // Default icons (fallback)\n const [isRainbow, isTrust, isPhantom, isMetaMask, isRabby] = [\n strippedId?.includes(\"rainbow\"),\n strippedId?.includes(\"trust\"),\n strippedId?.includes(\"phantom\"),\n strippedId?.includes(\"coinbase\"),\n strippedId?.includes(\"metamask\"),\n strippedId?.includes(\"rabby\"),\n ];\n\n if (isMobile) {\n if (!isMetaMask) icons.push(<MetaMask />);\n if (!isTrust) icons.push(<Trust background />);\n if (!isRainbow && icons.length < 3) icons.push(<Rainbow />);\n } else {\n if (!isMetaMask) icons.push(<MetaMask />);\n if (!isRainbow) icons.push(<Rainbow />);\n if (!isPhantom) icons.push(<Phantom />);\n if (!isRabby && icons.length < 3) icons.push(<Rabby />);\n }\n\n return icons;\n}\n\nfunction getDepositAddressOption(\n setRoute: (route: ROUTES, data?: Record<string, any>) => void,\n locales: ReturnType<typeof useLocales>,\n excludeTron: boolean = false,\n) {\n const icons = excludeTron\n ? [<Ethereum key=\"eth\" />, <Polygon key=\"polygon\" />, <Base key=\"base\" />]\n : [<Ethereum key=\"eth\" />, <Tron key=\"tron\" />, <Base key=\"base\" />];\n\n return {\n id: \"depositAddress\",\n title: locales.payToAddress,\n icons,\n onClick: () => {\n setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN);\n },\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,17 @@ function useConnectors() {
|
|
|
4
4
|
const connectors = useConnectors$1();
|
|
5
5
|
return connectors ?? [];
|
|
6
6
|
}
|
|
7
|
+
function useConnector(id, uuid) {
|
|
8
|
+
const connectors = useConnectors();
|
|
9
|
+
if (id === "injected" && uuid) {
|
|
10
|
+
return connectors.find((c) => c.id === id && c.name === uuid);
|
|
11
|
+
} else if (id === "injected") {
|
|
12
|
+
return connectors.find(
|
|
13
|
+
(c) => c.id === id && c.name.includes("Injected")
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
return connectors.find((c) => c.id === id);
|
|
17
|
+
}
|
|
7
18
|
|
|
8
|
-
export { useConnectors };
|
|
19
|
+
export { useConnector, useConnectors };
|
|
9
20
|
//# sourceMappingURL=useConnectors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConnectors.js","sources":["../../../src/hooks/useConnectors.ts"],"sourcesContent":["import { type Connector, useConnectors as useWagmiConnectors } from \"wagmi\";\n\nexport function useConnectors() {\n const connectors = useWagmiConnectors();\n return connectors ?? [];\n}\n\nexport function useConnector(id: string, uuid?: string) {\n const connectors = useConnectors();\n if (id === \"injected\" && uuid) {\n return connectors.find((c) => c.id === id && c.name === uuid) as Connector;\n } else if (id === \"injected\") {\n return connectors.find(\n (c) => c.id === id && c.name.includes(\"Injected\"),\n ) as Connector;\n }\n return connectors.find((c) => c.id === id) as Connector;\n}\n"],"names":["useWagmiConnectors"],"mappings":";;AAEO,SAAS,aAAgB,GAAA;AAC9B,EAAA,MAAM,aAAaA,eAAmB,EAAA,CAAA;AACtC,EAAA,OAAO,cAAc,EAAC,CAAA;AACxB;;;;"}
|
|
1
|
+
{"version":3,"file":"useConnectors.js","sources":["../../../src/hooks/useConnectors.ts"],"sourcesContent":["import { type Connector, useConnectors as useWagmiConnectors } from \"wagmi\";\n\nexport function useConnectors() {\n const connectors = useWagmiConnectors();\n return connectors ?? [];\n}\n\nexport function useConnector(id: string, uuid?: string) {\n const connectors = useConnectors();\n if (id === \"injected\" && uuid) {\n return connectors.find((c) => c.id === id && c.name === uuid) as Connector;\n } else if (id === \"injected\") {\n return connectors.find(\n (c) => c.id === id && c.name.includes(\"Injected\"),\n ) as Connector;\n }\n return connectors.find((c) => c.id === id) as Connector;\n}\n"],"names":["useWagmiConnectors"],"mappings":";;AAEO,SAAS,aAAgB,GAAA;AAC9B,EAAA,MAAM,aAAaA,eAAmB,EAAA,CAAA;AACtC,EAAA,OAAO,cAAc,EAAC,CAAA;AACxB,CAAA;AAEgB,SAAA,YAAA,CAAa,IAAY,IAAe,EAAA;AACtD,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAI,IAAA,EAAA,KAAO,cAAc,IAAM,EAAA;AAC7B,IAAO,OAAA,UAAA,CAAW,KAAK,CAAC,CAAA,KAAM,EAAE,EAAO,KAAA,EAAA,IAAM,CAAE,CAAA,IAAA,KAAS,IAAI,CAAA,CAAA;AAAA,GAC9D,MAAA,IAAW,OAAO,UAAY,EAAA;AAC5B,IAAA,OAAO,UAAW,CAAA,IAAA;AAAA,MAChB,CAAC,MAAM,CAAE,CAAA,EAAA,KAAO,MAAM,CAAE,CAAA,IAAA,CAAK,SAAS,UAAU,CAAA;AAAA,KAClD,CAAA;AAAA,GACF;AACA,EAAA,OAAO,WAAW,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,EAAE,CAAA,CAAA;AAC3C;;;;"}
|