@daimo/pay 1.15.0 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/DaimoPayButton/index.d.ts +13 -0
- package/build/hooks/useConnect.d.ts +8 -8
- package/build/hooks/useLocales.d.ts +2 -1
- package/build/hooks/useWalletPaymentOptions.d.ts +12 -1
- package/build/index.d.ts +626 -15
- package/build/localizations/locales/en-US.d.ts +2 -0
- package/build/localizations/locales/index.d.ts +1 -0
- package/build/package.json.js +6 -4
- package/build/package.json.js.map +1 -1
- package/build/payment/paymentFsm.d.ts +5 -0
- package/build/payment/paymentUtils.d.ts +6 -0
- package/build/src/assets/MobileWithLogos.js +320 -1
- package/build/src/assets/MobileWithLogos.js.map +1 -1
- package/build/src/assets/ScanIconWithLogos.js +216 -10
- package/build/src/assets/ScanIconWithLogos.js.map +1 -1
- package/build/src/assets/browsers.js +963 -7
- package/build/src/assets/browsers.js.map +1 -1
- package/build/src/assets/chains.js +633 -103
- package/build/src/assets/chains.js.map +1 -1
- package/build/src/assets/coins.js +38 -1
- package/build/src/assets/coins.js.map +1 -1
- package/build/src/assets/crepe.js +35 -1
- package/build/src/assets/crepe.js.map +1 -1
- package/build/src/assets/icons.js +258 -15
- package/build/src/assets/icons.js.map +1 -1
- package/build/src/assets/logos.js +1510 -140
- package/build/src/assets/logos.js.map +1 -1
- package/build/src/assets/wallet.js +32 -1
- package/build/src/assets/wallet.js.map +1 -1
- package/build/src/assets/wave.js +41 -1
- package/build/src/assets/wave.js.map +1 -1
- package/build/src/components/Common/Alert/index.js +4 -1
- package/build/src/components/Common/Alert/index.js.map +1 -1
- package/build/src/components/Common/Alert/styles.js +4 -4
- package/build/src/components/Common/Alert/styles.js.map +1 -1
- package/build/src/components/Common/AmountInput/AmountInputField.js +29 -18
- package/build/src/components/Common/AmountInput/AmountInputField.js.map +1 -1
- package/build/src/components/Common/AmountInput/index.js +112 -99
- package/build/src/components/Common/AmountInput/index.js.map +1 -1
- package/build/src/components/Common/Avatar/index.js +63 -51
- package/build/src/components/Common/Avatar/index.js.map +1 -1
- package/build/src/components/Common/Avatar/styles.js +9 -14
- package/build/src/components/Common/Avatar/styles.js.map +1 -1
- package/build/src/components/Common/BrowserIcon/index.js +15 -14
- package/build/src/components/Common/BrowserIcon/index.js.map +1 -1
- package/build/src/components/Common/BrowserIcon/styles.js +1 -1
- package/build/src/components/Common/BrowserIcon/styles.js.map +1 -1
- package/build/src/components/Common/Button/index.js +131 -25
- package/build/src/components/Common/Button/index.js.map +1 -1
- package/build/src/components/Common/Button/styles.js +20 -24
- package/build/src/components/Common/Button/styles.js.map +1 -1
- package/build/src/components/Common/Chain/index.js +130 -14
- package/build/src/components/Common/Chain/index.js.map +1 -1
- package/build/src/components/Common/Chain/styles.js +9 -13
- package/build/src/components/Common/Chain/styles.js.map +1 -1
- package/build/src/components/Common/ChainSelectList/index.js +232 -89
- package/build/src/components/Common/ChainSelectList/index.js.map +1 -1
- package/build/src/components/Common/ChainSelectList/styles.js +11 -13
- package/build/src/components/Common/ChainSelectList/styles.js.map +1 -1
- package/build/src/components/Common/CircleTimer.js +85 -41
- package/build/src/components/Common/CircleTimer.js.map +1 -1
- package/build/src/components/Common/ConnectorList/index.js +106 -80
- package/build/src/components/Common/ConnectorList/index.js.map +1 -1
- package/build/src/components/Common/ConnectorList/styles.js +28 -36
- package/build/src/components/Common/ConnectorList/styles.js.map +1 -1
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +16 -9
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -1
- package/build/src/components/Common/CopyToClipboard/index.js +3 -5
- package/build/src/components/Common/CopyToClipboard/index.js.map +1 -1
- package/build/src/components/Common/CustomQRCode/QRCode.js +120 -57
- package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -1
- package/build/src/components/Common/CustomQRCode/index.js +60 -10
- package/build/src/components/Common/CustomQRCode/index.js.map +1 -1
- package/build/src/components/Common/CustomQRCode/styles.js +6 -6
- package/build/src/components/Common/CustomQRCode/styles.js.map +1 -1
- package/build/src/components/Common/FitText/index.js +24 -17
- package/build/src/components/Common/FitText/index.js.map +1 -1
- package/build/src/components/Common/Modal/index.js +481 -267
- package/build/src/components/Common/Modal/index.js.map +1 -1
- package/build/src/components/Common/Modal/styles.js +44 -48
- package/build/src/components/Common/Modal/styles.js.map +1 -1
- package/build/src/components/Common/OptionsList/index.js +75 -33
- package/build/src/components/Common/OptionsList/index.js.map +1 -1
- package/build/src/components/Common/OptionsList/styles.js +7 -8
- package/build/src/components/Common/OptionsList/styles.js.map +1 -1
- package/build/src/components/Common/OrderHeader/index.js +109 -65
- package/build/src/components/Common/OrderHeader/index.js.map +1 -1
- package/build/src/components/Common/PaymentBreakdown/index.js +29 -7
- package/build/src/components/Common/PaymentBreakdown/index.js.map +1 -1
- package/build/src/components/Common/Portal/index.js +21 -22
- package/build/src/components/Common/Portal/index.js.map +1 -1
- package/build/src/components/Common/PoweredByFooter/index.js +39 -21
- package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
- package/build/src/components/Common/ScrollArea/index.js +107 -52
- package/build/src/components/Common/ScrollArea/index.js.map +1 -1
- package/build/src/components/Common/ScrollArea/styles.js +7 -11
- package/build/src/components/Common/ScrollArea/styles.js.map +1 -1
- package/build/src/components/Common/SelectAnotherMethodButton/index.js +67 -55
- package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -1
- package/build/src/components/Common/Spinner/index.js +56 -16
- package/build/src/components/Common/Spinner/index.js.map +1 -1
- package/build/src/components/Common/Spinner/styles.js +2 -2
- package/build/src/components/Common/Spinner/styles.js.map +1 -1
- package/build/src/components/Common/SwitchButton/index.js +18 -15
- package/build/src/components/Common/SwitchButton/index.js.map +1 -1
- package/build/src/components/Common/ThemedButton/index.js +37 -16
- package/build/src/components/Common/ThemedButton/index.js.map +1 -1
- package/build/src/components/Common/ThemedButton/styles.js +2 -2
- package/build/src/components/Common/ThemedButton/styles.js.map +1 -1
- package/build/src/components/Common/TokenChainLogo/index.js +14 -8
- package/build/src/components/Common/TokenChainLogo/index.js.map +1 -1
- package/build/src/components/Common/Tooltip/index.js +115 -83
- package/build/src/components/Common/Tooltip/index.js.map +1 -1
- package/build/src/components/Common/Tooltip/styles.js +8 -8
- package/build/src/components/Common/Tooltip/styles.js.map +1 -1
- package/build/src/components/Common/WalletChainLogo/index.js +13 -6
- package/build/src/components/Common/WalletChainLogo/index.js.map +1 -1
- package/build/src/components/DaimoPayButton/index.js +170 -176
- package/build/src/components/DaimoPayButton/index.js.map +1 -1
- package/build/src/components/DaimoPayButton/styles.js +4 -4
- package/build/src/components/DaimoPayButton/styles.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectUsing.js +50 -24
- package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +303 -163
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +10 -12
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +69 -39
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
- package/build/src/components/DaimoPayModal/index.js +409 -416
- package/build/src/components/DaimoPayModal/index.js.map +1 -1
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +15 -11
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -1
- package/build/src/components/Pages/About/graphics.js +796 -130
- package/build/src/components/Pages/About/graphics.js.map +1 -1
- package/build/src/components/Pages/About/index.js +203 -110
- package/build/src/components/Pages/About/index.js.map +1 -1
- package/build/src/components/Pages/About/styles.js +11 -15
- package/build/src/components/Pages/About/styles.js.map +1 -1
- package/build/src/components/Pages/Confirmation/index.js +72 -41
- package/build/src/components/Pages/Confirmation/index.js.map +1 -1
- package/build/src/components/Pages/Connectors/index.js +50 -16
- package/build/src/components/Pages/Connectors/index.js.map +1 -1
- package/build/src/components/Pages/Connectors/styles.js +10 -10
- package/build/src/components/Pages/Connectors/styles.js.map +1 -1
- package/build/src/components/Pages/DownloadApp/index.js +23 -18
- package/build/src/components/Pages/DownloadApp/index.js.map +1 -1
- package/build/src/components/Pages/Error/index.js +27 -15
- package/build/src/components/Pages/Error/index.js.map +1 -1
- package/build/src/components/Pages/MobileConnectors/index.js +50 -44
- package/build/src/components/Pages/MobileConnectors/index.js.map +1 -1
- package/build/src/components/Pages/MobileConnectors/styles.js +9 -11
- package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -1
- package/build/src/components/Pages/Onboarding/index.js +20 -4
- package/build/src/components/Pages/Onboarding/index.js.map +1 -1
- package/build/src/components/Pages/Onboarding/styles.js +13 -13
- package/build/src/components/Pages/Onboarding/styles.js.map +1 -1
- package/build/src/components/Pages/PayWithToken/index.js +133 -122
- package/build/src/components/Pages/PayWithToken/index.js.map +1 -1
- package/build/src/components/Pages/SelectAmount/index.js +12 -5
- package/build/src/components/Pages/SelectAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectDepositAddressAmount/index.js +56 -38
- package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectDepositAddressChain/index.js +57 -40
- package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -1
- package/build/src/components/Pages/SelectExchange/index.js +29 -24
- package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
- package/build/src/components/Pages/SelectExternalAmount/index.js +57 -41
- package/build/src/components/Pages/SelectExternalAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectMethod/index.js +201 -183
- package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
- package/build/src/components/Pages/SelectToken/index.js +72 -46
- package/build/src/components/Pages/SelectToken/index.js.map +1 -1
- package/build/src/components/Pages/SelectWalletAmount/index.js +40 -32
- package/build/src/components/Pages/SelectWalletAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectWalletChain/index.js +40 -36
- package/build/src/components/Pages/SelectWalletChain/index.js.map +1 -1
- package/build/src/components/Pages/SelectZKP/index.js +29 -24
- package/build/src/components/Pages/SelectZKP/index.js.map +1 -1
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js +60 -45
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -1
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +73 -61
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -1
- package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +12 -5
- package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -1
- package/build/src/components/Pages/SwitchNetworks/index.js +29 -10
- package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -1
- package/build/src/components/Pages/WaitingDepositAddress/index.js +339 -178
- package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -1
- package/build/src/components/Pages/WaitingExternal/index.js +69 -46
- package/build/src/components/Pages/WaitingExternal/index.js.map +1 -1
- package/build/src/components/Pages/WaitingWallet/index.js +37 -16
- package/build/src/components/Pages/WaitingWallet/index.js.map +1 -1
- package/build/src/components/Spinners/CircleSpinner/index.js +96 -7
- package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/CircleSpinner/styles.js +6 -7
- package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -1
- package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +18 -9
- package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/SquircleSpinner/index.js +60 -7
- package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/SquircleSpinner/styles.js +4 -4
- package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -1
- package/build/src/components/Spinners/TokenLogoSpinner/index.js +12 -1
- package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/TokenLogoSpinner/styles.js +1 -1
- package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -1
- package/build/src/components/Spinners/WalletPaymentSpinner/index.js +27 -20
- package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/styles.js +3 -4
- package/build/src/components/Spinners/styles.js.map +1 -1
- package/build/src/constants/defaultTheme.js +1 -1
- package/build/src/constants/defaultTheme.js.map +1 -1
- package/build/src/constants/routes.js +29 -30
- package/build/src/constants/routes.js.map +1 -1
- package/build/src/defaultConfig.js +49 -46
- package/build/src/defaultConfig.js.map +1 -1
- package/build/src/defaultConnectors.js +32 -19
- package/build/src/defaultConnectors.js.map +1 -1
- package/build/src/hooks/useChainIsSupported.js +3 -5
- package/build/src/hooks/useChainIsSupported.js.map +1 -1
- package/build/src/hooks/useChains.js +3 -4
- package/build/src/hooks/useChains.js.map +1 -1
- package/build/src/hooks/useConnect.js +51 -39
- package/build/src/hooks/useConnect.js.map +1 -1
- package/build/src/hooks/useConnectCallback.js +15 -12
- package/build/src/hooks/useConnectCallback.js.map +1 -1
- package/build/src/hooks/useConnectors.js +2 -2
- package/build/src/hooks/useConnectors.js.map +1 -1
- package/build/src/hooks/useDaimoPay.js +98 -82
- package/build/src/hooks/useDaimoPay.js.map +1 -1
- package/build/src/hooks/useDaimoPayStatus.js +4 -15
- package/build/src/hooks/useDaimoPayStatus.js.map +1 -1
- package/build/src/hooks/useDaimoPayUI.js +7 -7
- package/build/src/hooks/useDaimoPayUI.js.map +1 -1
- package/build/src/hooks/useDepositAddressOptions.js +29 -25
- package/build/src/hooks/useDepositAddressOptions.js.map +1 -1
- package/build/src/hooks/useEnsFallbackConfig.js +5 -5
- package/build/src/hooks/useEnsFallbackConfig.js.map +1 -1
- package/build/src/hooks/useExternalPaymentOptions.js +57 -52
- package/build/src/hooks/useExternalPaymentOptions.js.map +1 -1
- package/build/src/hooks/useFitText.js +120 -135
- package/build/src/hooks/useFitText.js.map +1 -1
- package/build/src/hooks/useFocusTrap.js +33 -37
- package/build/src/hooks/useFocusTrap.js.map +1 -1
- package/build/src/hooks/useIsMobile.js +3 -3
- package/build/src/hooks/useIsMobile.js.map +1 -1
- package/build/src/hooks/useIsMounted.js +3 -5
- package/build/src/hooks/useIsMounted.js.map +1 -1
- package/build/src/hooks/useLastConnector.js +15 -15
- package/build/src/hooks/useLastConnector.js.map +1 -1
- package/build/src/hooks/useLocales.js +44 -42
- package/build/src/hooks/useLocales.js.map +1 -1
- package/build/src/hooks/useLockBodyScroll.js +38 -44
- package/build/src/hooks/useLockBodyScroll.js.map +1 -1
- package/build/src/hooks/useOrderUsdLimits.js +17 -19
- package/build/src/hooks/useOrderUsdLimits.js.map +1 -1
- package/build/src/hooks/usePayContext.js +3 -5
- package/build/src/hooks/usePayContext.js.map +1 -1
- package/build/src/hooks/usePaymentState.js +351 -321
- package/build/src/hooks/usePaymentState.js.map +1 -1
- package/build/src/hooks/usePrevious.js +6 -7
- package/build/src/hooks/usePrevious.js.map +1 -1
- package/build/src/hooks/useSolanaPaymentOptions.js +33 -33
- package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -1
- package/build/src/hooks/useTokenOptions.js +131 -95
- package/build/src/hooks/useTokenOptions.js.map +1 -1
- package/build/src/hooks/useUntronAvailability.js +26 -34
- package/build/src/hooks/useUntronAvailability.js.map +1 -1
- package/build/src/hooks/useWalletPaymentOptions.js +86 -61
- package/build/src/hooks/useWalletPaymentOptions.js.map +1 -1
- package/build/src/hooks/useWindowSize.js +16 -16
- package/build/src/hooks/useWindowSize.js.map +1 -1
- package/build/src/localizations/index.js +28 -31
- package/build/src/localizations/index.js.map +1 -1
- package/build/src/localizations/locales/ar-AE.js +88 -88
- package/build/src/localizations/locales/ar-AE.js.map +1 -1
- package/build/src/localizations/locales/ca-AD.js +88 -88
- package/build/src/localizations/locales/ca-AD.js.map +1 -1
- package/build/src/localizations/locales/ee-EE.js +96 -88
- package/build/src/localizations/locales/ee-EE.js.map +1 -1
- package/build/src/localizations/locales/en-US.js +134 -124
- package/build/src/localizations/locales/en-US.js.map +1 -1
- package/build/src/localizations/locales/es-ES.js +126 -124
- package/build/src/localizations/locales/es-ES.js.map +1 -1
- package/build/src/localizations/locales/fa-IR.js +88 -88
- package/build/src/localizations/locales/fa-IR.js.map +1 -1
- package/build/src/localizations/locales/fr-FR.js +88 -88
- package/build/src/localizations/locales/fr-FR.js.map +1 -1
- package/build/src/localizations/locales/ja-JP.js +88 -88
- package/build/src/localizations/locales/ja-JP.js.map +1 -1
- package/build/src/localizations/locales/pt-BR.js +96 -88
- package/build/src/localizations/locales/pt-BR.js.map +1 -1
- package/build/src/localizations/locales/ru-RU.js +92 -88
- package/build/src/localizations/locales/ru-RU.js.map +1 -1
- package/build/src/localizations/locales/tr-TR.js +96 -88
- package/build/src/localizations/locales/tr-TR.js.map +1 -1
- package/build/src/localizations/locales/vi-VN.js +96 -88
- package/build/src/localizations/locales/vi-VN.js.map +1 -1
- package/build/src/localizations/locales/zh-CN.js +88 -88
- package/build/src/localizations/locales/zh-CN.js.map +1 -1
- package/build/src/payment/paymentEffects.js +237 -264
- package/build/src/payment/paymentEffects.js.map +1 -1
- package/build/src/payment/paymentFsm.js +167 -187
- package/build/src/payment/paymentFsm.js.map +1 -1
- package/build/src/payment/paymentStore.js +8 -10
- package/build/src/payment/paymentStore.js.map +1 -1
- package/build/src/payment/paymentUtils.js +10 -0
- package/build/src/payment/paymentUtils.js.map +1 -0
- package/build/src/provider/DaimoPayProvider.js +258 -245
- package/build/src/provider/DaimoPayProvider.js.map +1 -1
- package/build/src/provider/PayContext.js +0 -1
- package/build/src/provider/PayContext.js.map +1 -1
- package/build/src/provider/PaymentProvider.js +18 -17
- package/build/src/provider/PaymentProvider.js.map +1 -1
- package/build/src/provider/SolanaContextProvider.js +6 -3
- package/build/src/provider/SolanaContextProvider.js.map +1 -1
- package/build/src/provider/Web3ContextProvider.js +23 -23
- package/build/src/provider/Web3ContextProvider.js.map +1 -1
- package/build/src/stateStore.js +28 -74
- package/build/src/stateStore.js.map +1 -1
- package/build/src/styles/defaultTheme.js +64 -73
- package/build/src/styles/defaultTheme.js.map +1 -1
- package/build/src/styles/index.js +202 -217
- package/build/src/styles/index.js.map +1 -1
- package/build/src/styles/styled/index.js +0 -10
- package/build/src/styles/styled/index.js.map +1 -1
- package/build/src/styles/themes/base.js +136 -136
- package/build/src/styles/themes/base.js.map +1 -1
- package/build/src/styles/themes/index.js.map +1 -1
- package/build/src/styles/themes/midnight.js +71 -71
- package/build/src/styles/themes/midnight.js.map +1 -1
- package/build/src/styles/themes/minimal.js +75 -75
- package/build/src/styles/themes/minimal.js.map +1 -1
- package/build/src/styles/themes/nouns.js +76 -76
- package/build/src/styles/themes/nouns.js.map +1 -1
- package/build/src/styles/themes/retro.js +88 -88
- package/build/src/styles/themes/retro.js.map +1 -1
- package/build/src/styles/themes/rounded.js +84 -84
- package/build/src/styles/themes/rounded.js.map +1 -1
- package/build/src/styles/themes/soft.js +66 -66
- package/build/src/styles/themes/soft.js.map +1 -1
- package/build/src/styles/themes/web95.js +95 -95
- package/build/src/styles/themes/web95.js.map +1 -1
- package/build/src/utils/exports.js +0 -1
- package/build/src/utils/exports.js.map +1 -1
- package/build/src/utils/format.js +25 -63
- package/build/src/utils/format.js.map +1 -1
- package/build/src/utils/index.js +23 -20
- package/build/src/utils/index.js.map +1 -1
- package/build/src/utils/p3.js +8 -9
- package/build/src/utils/p3.js.map +1 -1
- package/build/src/utils/platform.js +6 -8
- package/build/src/utils/platform.js.map +1 -1
- package/build/src/utils/polling.js +31 -31
- package/build/src/utils/polling.js.map +1 -1
- package/build/src/utils/supportUrl.js +9 -9
- package/build/src/utils/supportUrl.js.map +1 -1
- package/build/src/utils/trpc.js +11 -11
- package/build/src/utils/trpc.js.map +1 -1
- package/build/src/utils/validateInput.js +9 -29
- package/build/src/utils/validateInput.js.map +1 -1
- package/build/src/wallets/index.js +13 -22
- package/build/src/wallets/index.js.map +1 -1
- package/build/src/wallets/useWallets.js +183 -181
- package/build/src/wallets/useWallets.js.map +1 -1
- package/build/src/wallets/walletConfigs.js +230 -235
- package/build/src/wallets/walletConfigs.js.map +1 -1
- package/build/src/world-mini-app/WorldPayButton.js +113 -118
- package/build/src/world-mini-app/WorldPayButton.js.map +1 -1
- package/build/src/world-mini-app/promptWorldPayment.js +49 -47
- package/build/src/world-mini-app/promptWorldPayment.js.map +1 -1
- package/build/types-7ed033b6.d.ts +66 -0
- package/build/world.d.ts +89 -1
- package/package.json +6 -4
|
@@ -12,134 +12,145 @@ import { PageContent, ModalContent, ModalH1, Link } from '../../Common/Modal/sty
|
|
|
12
12
|
import PaymentBreakdown from '../../Common/PaymentBreakdown/index.js';
|
|
13
13
|
import TokenLogoSpinner from '../../Spinners/TokenLogoSpinner/index.js';
|
|
14
14
|
|
|
15
|
-
var PayState;
|
|
16
|
-
(function (PayState) {
|
|
17
|
-
PayState["RequestingPayment"] = "Waiting For Payment";
|
|
18
|
-
PayState["SwitchingChain"] = "Switching Chain";
|
|
19
|
-
PayState["RequestCancelled"] = "Payment Cancelled";
|
|
20
|
-
PayState["RequestSuccessful"] = "Payment Successful";
|
|
21
|
-
PayState["RequestFailed"] = "Payment Failed";
|
|
22
|
-
})(PayState || (PayState = {}));
|
|
23
15
|
const PayWithToken = () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
chainId: option.required.token.chainId,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
catch (e) {
|
|
49
|
-
console.error("Failed to switch chain", e);
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
})();
|
|
53
|
-
if (resultChain?.id !== option.required.token.chainId) {
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
};
|
|
59
|
-
const handleTransfer = async (option) => {
|
|
60
|
-
// Switch chain if necessary
|
|
61
|
-
setPayState(PayState.SwitchingChain);
|
|
62
|
-
const switchChain = await trySwitchingChain(option);
|
|
63
|
-
if (!switchChain) {
|
|
64
|
-
console.error("Switching chain failed");
|
|
65
|
-
setPayState(PayState.RequestCancelled);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
setPayState(PayState.RequestingPayment);
|
|
16
|
+
const { triggerResize, paymentState, setRoute, log, trpc } = usePayContext();
|
|
17
|
+
const { payWithToken, selectedTokenOption } = paymentState;
|
|
18
|
+
const { order } = useDaimoPay();
|
|
19
|
+
const [payState, setPayStateInner] = useState(
|
|
20
|
+
"Waiting For Payment" /* RequestingPayment */
|
|
21
|
+
);
|
|
22
|
+
const setPayState = (state) => {
|
|
23
|
+
setPayStateInner(state);
|
|
24
|
+
log(`[PAY TOKEN] payState: ${state}`);
|
|
25
|
+
trpc.nav.mutate({
|
|
26
|
+
action: "pay-with-token-state",
|
|
27
|
+
data: { state }
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const [txURL, setTxURL] = useState();
|
|
31
|
+
const locales = useLocales();
|
|
32
|
+
const walletChainId = useChainId();
|
|
33
|
+
const { switchChainAsync } = useSwitchChain();
|
|
34
|
+
const trySwitchingChain = async (option, forceSwitch = false) => {
|
|
35
|
+
if (walletChainId !== option.required.token.chainId || forceSwitch) {
|
|
36
|
+
const resultChain = await (async () => {
|
|
69
37
|
try {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (result.success) {
|
|
77
|
-
setPayState(PayState.RequestSuccessful);
|
|
78
|
-
setTimeout(() => {
|
|
79
|
-
setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-token" });
|
|
80
|
-
}, 200);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
setPayState(PayState.RequestFailed);
|
|
84
|
-
}
|
|
38
|
+
return await switchChainAsync({
|
|
39
|
+
chainId: option.required.token.chainId
|
|
40
|
+
});
|
|
41
|
+
} catch (e) {
|
|
42
|
+
console.error("Failed to switch chain", e);
|
|
43
|
+
return null;
|
|
85
44
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
45
|
+
})();
|
|
46
|
+
if (resultChain?.id !== option.required.token.chainId) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
};
|
|
52
|
+
const handleTransfer = async (option) => {
|
|
53
|
+
setPayState("Switching Chain" /* SwitchingChain */);
|
|
54
|
+
const switchChain = await trySwitchingChain(option);
|
|
55
|
+
if (!switchChain) {
|
|
56
|
+
console.error("Switching chain failed");
|
|
57
|
+
setPayState("Payment Cancelled" /* RequestCancelled */);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
setPayState("Waiting For Payment" /* RequestingPayment */);
|
|
61
|
+
try {
|
|
62
|
+
const result = await payWithToken(option);
|
|
63
|
+
if (!result.txHash) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
setTxURL(
|
|
67
|
+
getChainExplorerTxUrl(option.required.token.chainId, result.txHash)
|
|
68
|
+
);
|
|
69
|
+
if (result.success) {
|
|
70
|
+
setPayState("Payment Successful" /* RequestSuccessful */);
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-token" });
|
|
73
|
+
}, 200);
|
|
74
|
+
} else {
|
|
75
|
+
setPayState("Payment Failed" /* RequestFailed */);
|
|
76
|
+
}
|
|
77
|
+
} catch (e) {
|
|
78
|
+
if (e?.name === "ConnectorChainMismatchError") {
|
|
79
|
+
log("Chain mismatch detected, attempting to switch and retry");
|
|
80
|
+
const switchSuccessful = await trySwitchingChain(option, true);
|
|
81
|
+
if (switchSuccessful) {
|
|
82
|
+
setPayState("Waiting For Payment" /* RequestingPayment */);
|
|
83
|
+
try {
|
|
84
|
+
const retryResult = await payWithToken(option);
|
|
85
|
+
if (!retryResult.txHash) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
setTxURL(
|
|
89
|
+
getChainExplorerTxUrl(
|
|
90
|
+
option.required.token.chainId,
|
|
91
|
+
retryResult.txHash
|
|
92
|
+
)
|
|
93
|
+
);
|
|
94
|
+
if (retryResult.success) {
|
|
95
|
+
setPayState("Payment Successful" /* RequestSuccessful */);
|
|
96
|
+
setTimeout(() => {
|
|
97
|
+
setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-token" });
|
|
98
|
+
}, 200);
|
|
99
|
+
} else {
|
|
100
|
+
setPayState("Payment Failed" /* RequestFailed */);
|
|
117
101
|
}
|
|
118
|
-
setPayState(PayState.RequestCancelled);
|
|
119
|
-
console.error("Failed to pay with token", e);
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
useEffect(() => {
|
|
123
|
-
if (!selectedTokenOption)
|
|
124
102
|
return;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}, [payState]);
|
|
137
|
-
if (selectedTokenOption == null) {
|
|
138
|
-
return jsx(PageContent, {});
|
|
103
|
+
} catch (retryError) {
|
|
104
|
+
console.error(
|
|
105
|
+
"Failed to pay with token after switching chain",
|
|
106
|
+
retryError
|
|
107
|
+
);
|
|
108
|
+
throw retryError;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
setPayState("Payment Cancelled" /* RequestCancelled */);
|
|
113
|
+
console.error("Failed to pay with token", e);
|
|
139
114
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
115
|
+
};
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
if (!selectedTokenOption) return;
|
|
118
|
+
const transferTimeout = setTimeout(() => {
|
|
119
|
+
handleTransfer(selectedTokenOption);
|
|
120
|
+
}, 100);
|
|
121
|
+
return () => {
|
|
122
|
+
clearTimeout(transferTimeout);
|
|
123
|
+
};
|
|
124
|
+
}, [selectedTokenOption]);
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
triggerResize();
|
|
127
|
+
}, [payState]);
|
|
128
|
+
if (selectedTokenOption == null) {
|
|
129
|
+
return /* @__PURE__ */ jsx(PageContent, {});
|
|
130
|
+
}
|
|
131
|
+
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
132
|
+
/* @__PURE__ */ jsx(TokenLogoSpinner, { token: selectedTokenOption.required.token }),
|
|
133
|
+
/* @__PURE__ */ jsxs(ModalContent, { style: { paddingBottom: 0 }, $preserveDisplay: true, children: [
|
|
134
|
+
txURL ? /* @__PURE__ */ jsx(ModalH1, { children: /* @__PURE__ */ jsx(Link, { href: txURL, target: "_blank", rel: "noopener noreferrer", children: payState }) }) : /* @__PURE__ */ jsx(ModalH1, { children: payState }),
|
|
135
|
+
/* @__PURE__ */ jsx(PaymentBreakdown, { paymentOption: selectedTokenOption }),
|
|
136
|
+
payState === "Payment Cancelled" /* RequestCancelled */ && /* @__PURE__ */ jsx(Button, { onClick: () => handleTransfer(selectedTokenOption), children: locales.retryPayment }),
|
|
137
|
+
payState === "Payment Failed" /* RequestFailed */ && /* @__PURE__ */ jsx(
|
|
138
|
+
Button,
|
|
139
|
+
{
|
|
140
|
+
onClick: () => {
|
|
141
|
+
window.open(
|
|
142
|
+
getSupportUrl(
|
|
143
|
+
order?.id?.toString() ?? "",
|
|
144
|
+
`Pay with token${txURL ? ` ${txURL}` : ""}`
|
|
145
|
+
),
|
|
146
|
+
"_blank"
|
|
147
|
+
);
|
|
148
|
+
},
|
|
149
|
+
children: locales.contactSupport
|
|
150
|
+
}
|
|
151
|
+
)
|
|
152
|
+
] })
|
|
153
|
+
] });
|
|
143
154
|
};
|
|
144
155
|
|
|
145
156
|
export { PayWithToken as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/PayWithToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/PayWithToken/index.tsx"],"sourcesContent":["import { getChainExplorerTxUrl, WalletPaymentOption } from \"@daimo/pay-common\";\nimport React, { useEffect, useState } from \"react\";\nimport { useChainId, useSwitchChain } from \"wagmi\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport { TrpcClient } from \"../../../utils/trpc\";\nimport Button from \"../../Common/Button\";\nimport {\n Link,\n ModalContent,\n ModalH1,\n PageContent,\n} from \"../../Common/Modal/styles\";\nimport PaymentBreakdown from \"../../Common/PaymentBreakdown\";\nimport TokenLogoSpinner from \"../../Spinners/TokenLogoSpinner\";\n\nenum PayState {\n RequestingPayment = \"Waiting For Payment\",\n SwitchingChain = \"Switching Chain\",\n RequestCancelled = \"Payment Cancelled\",\n RequestSuccessful = \"Payment Successful\",\n RequestFailed = \"Payment Failed\",\n}\n\nconst PayWithToken: React.FC = () => {\n const { triggerResize, paymentState, setRoute, log, trpc } = usePayContext();\n const { payWithToken, selectedTokenOption } = paymentState;\n const { order } = useDaimoPay();\n const [payState, setPayStateInner] = useState<PayState>(\n PayState.RequestingPayment,\n );\n const setPayState = (state: PayState) => {\n setPayStateInner(state);\n log(`[PAY TOKEN] payState: ${state}`);\n (trpc as TrpcClient).nav.mutate({\n action: \"pay-with-token-state\",\n data: { state },\n });\n };\n const [txURL, setTxURL] = useState<string | undefined>();\n const locales = useLocales();\n const walletChainId = useChainId();\n const { switchChainAsync } = useSwitchChain();\n\n const trySwitchingChain = async (\n option: WalletPaymentOption,\n forceSwitch: boolean = false,\n ): Promise<boolean> => {\n if (walletChainId !== option.required.token.chainId || forceSwitch) {\n const resultChain = await (async () => {\n try {\n return await switchChainAsync({\n chainId: option.required.token.chainId,\n });\n } catch (e) {\n console.error(\"Failed to switch chain\", e);\n return null;\n }\n })();\n\n if (resultChain?.id !== option.required.token.chainId) {\n return false;\n }\n }\n\n return true;\n };\n\n const handleTransfer = async (option: WalletPaymentOption) => {\n // Switch chain if necessary\n setPayState(PayState.SwitchingChain);\n const switchChain = await trySwitchingChain(option);\n\n if (!switchChain) {\n console.error(\"Switching chain failed\");\n setPayState(PayState.RequestCancelled);\n return;\n }\n\n setPayState(PayState.RequestingPayment);\n try {\n const result = await payWithToken(option);\n if (!result.txHash) {\n // Transaction not submitted yet. Do nothing, just keep polling.\n return;\n }\n setTxURL(\n getChainExplorerTxUrl(option.required.token.chainId, result.txHash),\n );\n if (result.success) {\n setPayState(PayState.RequestSuccessful);\n setTimeout(() => {\n setRoute(ROUTES.CONFIRMATION, { event: \"wait-pay-with-token\" });\n }, 200);\n } else {\n setPayState(PayState.RequestFailed);\n }\n } catch (e: any) {\n if (e?.name === \"ConnectorChainMismatchError\") {\n // Workaround for Rainbow wallet bug -- user is able to switch chain\n // without the wallet updating the chain ID for wagmi.\n log(\"Chain mismatch detected, attempting to switch and retry\");\n const switchSuccessful = await trySwitchingChain(option, true);\n if (switchSuccessful) {\n setPayState(PayState.RequestingPayment);\n try {\n const retryResult = await payWithToken(option);\n if (!retryResult.txHash) {\n // Transaction not submitted yet. Do nothing, just keep polling.\n return;\n }\n setTxURL(\n getChainExplorerTxUrl(\n option.required.token.chainId,\n retryResult.txHash,\n ),\n );\n if (retryResult.success) {\n setPayState(PayState.RequestSuccessful);\n setTimeout(() => {\n setRoute(ROUTES.CONFIRMATION, { event: \"wait-pay-with-token\" });\n }, 200);\n } else {\n setPayState(PayState.RequestFailed);\n }\n return; // Payment handled after switching chain\n } catch (retryError) {\n console.error(\n \"Failed to pay with token after switching chain\",\n retryError,\n );\n throw retryError;\n }\n }\n }\n setPayState(PayState.RequestCancelled);\n console.error(\"Failed to pay with token\", e);\n }\n };\n\n useEffect(() => {\n if (!selectedTokenOption) return;\n\n const transferTimeout = setTimeout(() => {\n handleTransfer(selectedTokenOption);\n }, 100);\n return () => {\n clearTimeout(transferTimeout);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedTokenOption]);\n\n useEffect(() => {\n triggerResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [payState]);\n\n if (selectedTokenOption == null) {\n return <PageContent></PageContent>;\n }\n\n return (\n <PageContent>\n <TokenLogoSpinner token={selectedTokenOption.required.token} />\n <ModalContent style={{ paddingBottom: 0 }} $preserveDisplay={true}>\n {txURL ? (\n <ModalH1>\n <Link href={txURL} target=\"_blank\" rel=\"noopener noreferrer\">\n {payState}\n </Link>\n </ModalH1>\n ) : (\n <ModalH1>{payState}</ModalH1>\n )}\n <PaymentBreakdown paymentOption={selectedTokenOption} />\n {payState === PayState.RequestCancelled && (\n <Button onClick={() => handleTransfer(selectedTokenOption)}>\n {locales.retryPayment}\n </Button>\n )}\n {payState === PayState.RequestFailed && (\n <Button\n onClick={() => {\n window.open(\n getSupportUrl(\n order?.id?.toString() ?? \"\",\n `Pay with token${txURL ? ` ${txURL}` : \"\"}`,\n ),\n \"_blank\",\n );\n }}\n >\n {locales.contactSupport}\n </Button>\n )}\n </ModalContent>\n </PageContent>\n );\n};\n\nexport default PayWithToken;\n"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,19 @@ import { ROUTES } from '../../../constants/routes.js';
|
|
|
5
5
|
import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
6
6
|
|
|
7
7
|
const SelectAmount = () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const { paymentState } = usePayContext();
|
|
9
|
+
const { selectedTokenOption, setSelectedTokenOption } = paymentState;
|
|
10
|
+
if (selectedTokenOption == null) {
|
|
11
|
+
return /* @__PURE__ */ jsx(PageContent, {});
|
|
12
|
+
}
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
MultiCurrencySelectAmount,
|
|
15
|
+
{
|
|
16
|
+
selectedTokenOption,
|
|
17
|
+
setSelectedTokenOption,
|
|
18
|
+
nextPage: ROUTES.PAY_WITH_TOKEN
|
|
12
19
|
}
|
|
13
|
-
|
|
20
|
+
);
|
|
14
21
|
};
|
|
15
22
|
|
|
16
23
|
export { SelectAmount as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectAmount/index.tsx"],"sourcesContent":[null],"names":[
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectAmount/index.tsx"],"sourcesContent":["import React from \"react\";\nimport MultiCurrencySelectAmount from \"../../Common/AmountInput\";\nimport { PageContent } from \"../../Common/Modal/styles\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nconst SelectAmount: React.FC = () => {\n const { paymentState } = usePayContext();\n const { selectedTokenOption, setSelectedTokenOption } = paymentState;\n\n if (selectedTokenOption == null) {\n return <PageContent></PageContent>;\n }\n\n return (\n <MultiCurrencySelectAmount\n selectedTokenOption={selectedTokenOption}\n setSelectedTokenOption={setSelectedTokenOption}\n nextPage={ROUTES.PAY_WITH_TOKEN}\n />\n );\n};\n\nexport default SelectAmount;\n"],"names":[],"mappings":";;;;;;AAMA,MAAM,eAAyB,MAAM;AACnC,EAAM,MAAA,EAAE,YAAa,EAAA,GAAI,aAAc,EAAA,CAAA;AACvC,EAAM,MAAA,EAAE,mBAAqB,EAAA,sBAAA,EAA2B,GAAA,YAAA,CAAA;AAExD,EAAA,IAAI,uBAAuB,IAAM,EAAA;AAC/B,IAAA,2BAAQ,WAAY,EAAA,EAAA,CAAA,CAAA;AAAA,GACtB;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,mBAAA;AAAA,MACA,sBAAA;AAAA,MACA,UAAU,MAAO,CAAA,cAAA;AAAA,KAAA;AAAA,GACnB,CAAA;AAEJ;;;;"}
|
|
@@ -11,47 +11,65 @@ import Button from '../../Common/Button/index.js';
|
|
|
11
11
|
import ExternalPaymentSpinner from '../../Spinners/ExternalPaymentSpinner/index.js';
|
|
12
12
|
|
|
13
13
|
const SelectDepositAddressAmount = () => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
14
|
+
const { paymentState, setRoute, triggerResize } = usePayContext();
|
|
15
|
+
const { selectedDepositAddressOption } = paymentState;
|
|
16
|
+
const maxUsdLimit = paymentState.getOrderUsdLimit();
|
|
17
|
+
const minUsd = selectedDepositAddressOption?.minimumUsd ?? 0;
|
|
18
|
+
const minimumMessage = minUsd > 0 ? `Minimum ${formatUsd(minUsd, "up")}` : null;
|
|
19
|
+
const [usdInput, setUsdInput] = useState("");
|
|
20
|
+
const [message, setMessage] = useState(minimumMessage);
|
|
21
|
+
const [continueDisabled, setContinueDisabled] = useState(true);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
triggerResize();
|
|
24
|
+
}, [message]);
|
|
25
|
+
if (selectedDepositAddressOption == null) {
|
|
26
|
+
return /* @__PURE__ */ jsx(PageContent, {});
|
|
27
|
+
}
|
|
28
|
+
const handleAmountChange = (e) => {
|
|
29
|
+
const value = e.target.value;
|
|
30
|
+
if (value !== "" && !isValidNumber(value, USD_DECIMALS)) return;
|
|
31
|
+
setUsdInput(value);
|
|
32
|
+
if (Number(value) > maxUsdLimit) {
|
|
33
|
+
setMessage(`Maximum ${formatUsd(maxUsdLimit)}`);
|
|
34
|
+
} else {
|
|
35
|
+
setMessage(minimumMessage);
|
|
27
36
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
const usd = Number(sanitizeNumber(value));
|
|
38
|
+
setContinueDisabled(usd <= 0 || usd > maxUsdLimit || usd < minUsd);
|
|
39
|
+
};
|
|
40
|
+
const handleKeyDown = (e) => {
|
|
41
|
+
if (e.key === "Enter" && !continueDisabled) {
|
|
42
|
+
handleContinue();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const handleContinue = () => {
|
|
46
|
+
const amountUsd = Number(sanitizeNumber(usdInput));
|
|
47
|
+
paymentState.setChosenUsd(amountUsd);
|
|
48
|
+
setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, { amountUsd });
|
|
49
|
+
};
|
|
50
|
+
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
51
|
+
/* @__PURE__ */ jsx(
|
|
52
|
+
ExternalPaymentSpinner,
|
|
53
|
+
{
|
|
54
|
+
logoURI: selectedDepositAddressOption.logoURI,
|
|
55
|
+
logoShape: "circle"
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
/* @__PURE__ */ jsxs(ModalContent, { $preserveDisplay: true, children: [
|
|
59
|
+
/* @__PURE__ */ jsx(AmountInputContainer, { children: /* @__PURE__ */ jsx(
|
|
60
|
+
AmountInputField,
|
|
61
|
+
{
|
|
62
|
+
value: usdInput,
|
|
63
|
+
onChange: handleAmountChange,
|
|
64
|
+
onKeyDown: handleKeyDown
|
|
45
65
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
};
|
|
52
|
-
return (jsxs(PageContent, { children: [jsx(ExternalPaymentSpinner, { logoURI: selectedDepositAddressOption.logoURI, logoShape: "circle" }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsx(AmountInputContainer, { children: jsx(AmountInputField, { value: usdInput, onChange: handleAmountChange, onKeyDown: handleKeyDown }) }), message && jsx(ModalBody, { children: message }), jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })] })] }));
|
|
66
|
+
) }),
|
|
67
|
+
message && /* @__PURE__ */ jsx(ModalBody, { children: message }),
|
|
68
|
+
/* @__PURE__ */ jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })
|
|
69
|
+
] })
|
|
70
|
+
] });
|
|
53
71
|
};
|
|
54
|
-
const AmountInputContainer = styled.div
|
|
72
|
+
const AmountInputContainer = styled.div`
|
|
55
73
|
display: flex;
|
|
56
74
|
align-items: center;
|
|
57
75
|
justify-content: center;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectDepositAddressAmount/index.tsx"],"sourcesContent":[null],"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectDepositAddressAmount/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport {\n ModalBody,\n ModalContent,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport styled from \"../../../styles/styled\";\nimport { formatUsd, USD_DECIMALS } from \"../../../utils/format\";\nimport { isValidNumber, sanitizeNumber } from \"../../../utils/validateInput\";\nimport AmountInputField from \"../../Common/AmountInput/AmountInputField\";\nimport Button from \"../../Common/Button\";\nimport ExternalPaymentSpinner from \"../../Spinners/ExternalPaymentSpinner\";\n\nconst SelectDepositAddressAmount: React.FC = () => {\n const { paymentState, setRoute, triggerResize } = usePayContext();\n const { selectedDepositAddressOption } = paymentState;\n\n const maxUsdLimit = paymentState.getOrderUsdLimit();\n const minUsd = selectedDepositAddressOption?.minimumUsd ?? 0;\n const minimumMessage =\n minUsd > 0 ? `Minimum ${formatUsd(minUsd, \"up\")}` : null;\n\n const [usdInput, setUsdInput] = useState<string>(\"\");\n const [message, setMessage] = useState<string | null>(minimumMessage);\n const [continueDisabled, setContinueDisabled] = useState(true);\n\n useEffect(() => {\n triggerResize();\n }, [message]); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (selectedDepositAddressOption == null) {\n return <PageContent></PageContent>;\n }\n\n const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n if (value !== \"\" && !isValidNumber(value, USD_DECIMALS)) return;\n\n setUsdInput(value);\n\n if (Number(value) > maxUsdLimit) {\n setMessage(`Maximum ${formatUsd(maxUsdLimit)}`);\n } else {\n setMessage(minimumMessage);\n }\n\n const usd = Number(sanitizeNumber(value));\n setContinueDisabled(usd <= 0 || usd > maxUsdLimit || usd < minUsd);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && !continueDisabled) {\n handleContinue();\n }\n };\n\n const handleContinue = () => {\n const amountUsd = Number(sanitizeNumber(usdInput));\n paymentState.setChosenUsd(amountUsd);\n setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, { amountUsd });\n };\n\n return (\n <PageContent>\n <ExternalPaymentSpinner\n logoURI={selectedDepositAddressOption.logoURI}\n logoShape=\"circle\"\n />\n <ModalContent $preserveDisplay={true}>\n <AmountInputContainer>\n <AmountInputField\n value={usdInput}\n onChange={handleAmountChange}\n onKeyDown={handleKeyDown}\n />\n </AmountInputContainer>\n {message && <ModalBody>{message}</ModalBody>}\n <Button onClick={handleContinue} disabled={continueDisabled}>\n Continue\n </Button>\n </ModalContent>\n </PageContent>\n );\n};\n\nconst AmountInputContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport default SelectDepositAddressAmount;\n"],"names":[],"mappings":"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"}
|
|
@@ -9,46 +9,63 @@ import { OrderHeader } from '../../Common/OrderHeader/index.js';
|
|
|
9
9
|
import SelectAnotherMethodButton from '../../Common/SelectAnotherMethodButton/index.js';
|
|
10
10
|
|
|
11
11
|
const SelectDepositAddressChain = () => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
12
|
+
const { setRoute, paymentState } = usePayContext();
|
|
13
|
+
const pay = useDaimoPay();
|
|
14
|
+
const { order } = pay;
|
|
15
|
+
const {
|
|
16
|
+
isDepositFlow,
|
|
17
|
+
setSelectedDepositAddressOption,
|
|
18
|
+
depositAddressOptions,
|
|
19
|
+
untronAvailable
|
|
20
|
+
} = paymentState;
|
|
21
|
+
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
22
|
+
/* @__PURE__ */ jsx(OrderHeader, { minified: true }),
|
|
23
|
+
!depositAddressOptions.loading && depositAddressOptions.options?.length === 0 && /* @__PURE__ */ jsxs(
|
|
24
|
+
ModalContent,
|
|
25
|
+
{
|
|
26
|
+
style: {
|
|
27
|
+
display: "flex",
|
|
28
|
+
alignItems: "center",
|
|
29
|
+
justifyContent: "center",
|
|
30
|
+
paddingTop: 16,
|
|
31
|
+
paddingBottom: 16
|
|
32
|
+
},
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsx(ModalH1, { children: "Chains unavailable." }),
|
|
35
|
+
/* @__PURE__ */ jsx(SelectAnotherMethodButton, {})
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
/* @__PURE__ */ jsx(
|
|
40
|
+
OptionsList,
|
|
41
|
+
{
|
|
42
|
+
requiredSkeletons: 4,
|
|
43
|
+
isLoading: depositAddressOptions.loading,
|
|
44
|
+
options: (depositAddressOptions.options ?? []).map((option) => {
|
|
45
|
+
const disabled = (
|
|
46
|
+
// Disable if usd below min
|
|
47
|
+
option.minimumUsd > 0 && order?.mode === DaimoPayOrderMode.HYDRATED && order.usdValue < option.minimumUsd || // Disable if TRON_USDT unavailable
|
|
48
|
+
option.id === DepositAddressPaymentOptions.TRON_USDT && untronAvailable === false
|
|
49
|
+
);
|
|
50
|
+
return {
|
|
51
|
+
id: option.id,
|
|
52
|
+
title: option.id,
|
|
53
|
+
icons: [option.logoURI],
|
|
54
|
+
disabled,
|
|
55
|
+
onClick: () => {
|
|
56
|
+
setSelectedDepositAddressOption(option);
|
|
57
|
+
const meta = { event: "click-option", option: option.id };
|
|
58
|
+
if (isDepositFlow) {
|
|
59
|
+
setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, meta);
|
|
60
|
+
} else {
|
|
61
|
+
setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, meta);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}).sort((a, b) => Number(a.disabled) - Number(b.disabled))
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
] });
|
|
52
69
|
};
|
|
53
70
|
|
|
54
71
|
export { SelectDepositAddressChain as default };
|