@daimo/pay 1.19.4 → 1.19.6
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/_virtual/common.js +4 -0
- package/build/_virtual/common.js.map +1 -0
- package/build/_virtual/common2.js +4 -0
- package/build/_virtual/common2.js.map +1 -0
- package/build/_virtual/hash.js +4 -0
- package/build/_virtual/hash.js.map +1 -0
- package/build/_virtual/hash2.js +4 -0
- package/build/_virtual/hash2.js.map +1 -0
- package/build/_virtual/index.js +4 -0
- package/build/_virtual/index.js.map +1 -0
- package/build/_virtual/index2.js +4 -0
- package/build/_virtual/index2.js.map +1 -0
- package/build/_virtual/inherits_browser.js +4 -0
- package/build/_virtual/inherits_browser.js.map +1 -0
- package/build/_virtual/ripemd.js +4 -0
- package/build/_virtual/ripemd.js.map +1 -0
- package/build/_virtual/sha.js +4 -0
- package/build/_virtual/sha.js.map +1 -0
- package/build/_virtual/utils.js +4 -0
- package/build/_virtual/utils.js.map +1 -0
- package/build/node_modules/@binance/w3w-utils/dist/index.js +7 -0
- package/build/node_modules/@binance/w3w-utils/dist/index.js.map +1 -0
- package/build/node_modules/@binance/w3w-utils/node_modules/eventemitter3/index.js +349 -0
- package/build/node_modules/@binance/w3w-utils/node_modules/eventemitter3/index.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/common.js +105 -0
- package/build/node_modules/hash.js/lib/hash/common.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/hmac.js +60 -0
- package/build/node_modules/hash.js/lib/hash/hmac.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/ripemd.js +159 -0
- package/build/node_modules/hash.js/lib/hash/ripemd.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/sha/1.js +88 -0
- package/build/node_modules/hash.js/lib/hash/sha/1.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/sha/224.js +42 -0
- package/build/node_modules/hash.js/lib/hash/sha/224.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/sha/256.js +120 -0
- package/build/node_modules/hash.js/lib/hash/sha/256.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/sha/384.js +48 -0
- package/build/node_modules/hash.js/lib/hash/sha/384.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/sha/512.js +344 -0
- package/build/node_modules/hash.js/lib/hash/sha/512.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/sha/common.js +61 -0
- package/build/node_modules/hash.js/lib/hash/sha/common.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/sha.js +23 -0
- package/build/node_modules/hash.js/lib/hash/sha.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash/utils.js +291 -0
- package/build/node_modules/hash.js/lib/hash/utils.js.map +1 -0
- package/build/node_modules/hash.js/lib/hash.js +34 -0
- package/build/node_modules/hash.js/lib/hash.js.map +1 -0
- package/build/node_modules/inherits/inherits_browser.js +39 -0
- package/build/node_modules/inherits/inherits_browser.js.map +1 -0
- package/build/node_modules/minimalistic-assert/index.js +22 -0
- package/build/node_modules/minimalistic-assert/index.js.map +1 -0
- package/build/package.json.js +2 -2
- package/build/{connectkit → pay/packages/connectkit}/package.json.js +13 -7
- package/build/{connectkit → pay/packages/connectkit}/package.json.js.map +1 -1
- package/build/pay/packages/connectkit/src/assets/MobileWithLogos.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/ScanIconWithLogos.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/browsers.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/chains.js +639 -0
- package/build/pay/packages/connectkit/src/assets/chains.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/icons.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/assets/logos.js +106 -4
- package/build/pay/packages/connectkit/src/assets/logos.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/wave.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Alert/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Alert/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/AmountInput/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Avatar/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Avatar/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Button/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Button/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Chain/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Chain/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/CircleTimer.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ConnectorList/index.js +21 -20
- package/build/pay/packages/connectkit/src/components/Common/ConnectorList/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ConnectorList/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Common/CustomQRCode/QRCode.js +25 -21
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Common/CustomQRCode/index.js +22 -4
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Common/CustomQRCode/styles.js +3 -0
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/FitText/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Modal/index.js +33 -9
- package/build/pay/packages/connectkit/src/components/Common/Modal/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Modal/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/OptionsList/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/OptionsList/styles.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Common/OrderHeader/index.js +2 -46
- package/build/pay/packages/connectkit/src/components/Common/OrderHeader/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/PaymentBreakdown/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Portal/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/PoweredByFooter/index.js +39 -0
- package/build/pay/packages/connectkit/src/components/Common/PoweredByFooter/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ScrollArea/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ScrollArea/styles.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Common/SelectAnotherMethodButton/index.js +4 -4
- package/build/pay/packages/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Spinner/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Spinner/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/SwitchButton/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ThemedButton/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ThemedButton/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/TokenChainLogo/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Tooltip/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Tooltip/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/WalletChainLogo/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/DaimoPayButton/index.js +1 -2
- package/build/pay/packages/connectkit/src/components/DaimoPayButton/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayButton/styles.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/DaimoPayModal/ConnectUsing.js +8 -6
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/DaimoPayModal/ConnectWithInjector/index.js +13 -9
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js +86 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/DaimoPayModal/index.js +193 -50
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/About/graphics.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/About/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/About/styles.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Confirmation/index.js +8 -10
- package/build/pay/packages/connectkit/src/components/Pages/Confirmation/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Connectors/index.js +0 -2
- package/build/pay/packages/connectkit/src/components/Pages/Connectors/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Error/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/index.js +108 -0
- package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Onboarding/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Onboarding/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/PayWithToken/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectAmount/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectDepositAddressChain/index.js +12 -4
- package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectExchange/index.js +24 -3
- package/build/pay/packages/connectkit/src/components/Pages/SelectExchange/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectMethod/index.js +116 -31
- package/build/pay/packages/connectkit/src/components/Pages/SelectMethod/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectToken/index.js +3 -1
- package/build/pay/packages/connectkit/src/components/Pages/SelectToken/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectWalletAmount/index.js +11 -6
- package/build/pay/packages/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectWalletChain/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectZKP/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SwitchNetworks/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/WaitingDepositAddress/index.js +88 -5
- package/build/pay/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/WaitingExternal/index.js +88 -3
- package/build/pay/packages/connectkit/src/components/Pages/WaitingExternal/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/WaitingWallet/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Warning/index.js +56 -0
- package/build/pay/packages/connectkit/src/components/Pages/Warning/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Spinners/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/constants/defaultTheme.js.map +1 -0
- package/build/pay/packages/connectkit/src/constants/limits.js +4 -0
- package/build/pay/packages/connectkit/src/constants/limits.js.map +1 -0
- package/build/pay/packages/connectkit/src/constants/paymentOptions.js +62 -0
- package/build/pay/packages/connectkit/src/constants/paymentOptions.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/constants/routes.js +0 -1
- package/build/pay/packages/connectkit/src/constants/routes.js.map +1 -0
- package/build/pay/packages/connectkit/src/constants/wallets.js +7 -0
- package/build/pay/packages/connectkit/src/constants/wallets.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/defaultConfig.js +2 -1
- package/build/pay/packages/connectkit/src/defaultConfig.js.map +1 -0
- package/build/pay/packages/connectkit/src/defaultConnectors.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useChainIsSupported.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useChains.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useConnect.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useConnectCallback.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useConnectors.js +20 -0
- package/build/pay/packages/connectkit/src/hooks/useConnectors.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/hooks/useDaimoPay.js +25 -1
- package/build/pay/packages/connectkit/src/hooks/useDaimoPay.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useDaimoPayStatus.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useDaimoPayUI.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useDepositAddressOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useEnsFallbackConfig.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/hooks/useExternalPaymentOptions.js +19 -4
- package/build/pay/packages/connectkit/src/hooks/useExternalPaymentOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useFitText.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useFocusTrap.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useIsMobile.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useIsMounted.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useLastConnector.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useLocales.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useLockBodyScroll.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useOrderUsdLimits.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/usePayContext.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/hooks/usePaymentState.js +52 -18
- package/build/pay/packages/connectkit/src/hooks/usePaymentState.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/usePrevious.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/hooks/useSolanaPaymentOptions.js +2 -4
- package/build/pay/packages/connectkit/src/hooks/useSolanaPaymentOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useTokenOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useUntronAvailability.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useWalletPaymentOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useWindowSize.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ar-AE.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ca-AD.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ee-EE.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/en-US.js +9 -3
- package/build/pay/packages/connectkit/src/localizations/locales/en-US.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/es-ES.js +9 -2
- package/build/pay/packages/connectkit/src/localizations/locales/es-ES.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/fa-IR.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/fr-FR.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ja-JP.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/pt-BR.js +45 -1
- package/build/pay/packages/connectkit/src/localizations/locales/pt-BR.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ru-RU.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/tr-TR.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/vi-VN.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/zh-CN.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/payment/paymentEffects.js +1 -2
- package/build/pay/packages/connectkit/src/payment/paymentEffects.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/payment/paymentFsm.js +40 -0
- package/build/pay/packages/connectkit/src/payment/paymentFsm.js.map +1 -0
- package/build/pay/packages/connectkit/src/payment/paymentStore.js.map +1 -0
- package/build/pay/packages/connectkit/src/payment/paymentUtils.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/provider/DaimoPayProvider.js +0 -1
- package/build/pay/packages/connectkit/src/provider/DaimoPayProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/PayContext.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/PaymentProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/SolanaContextProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/Web3ContextProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/stateStore.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/defaultTheme.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/styled/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/base.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/midnight.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/minimal.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/nouns.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/retro.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/rounded.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/soft.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/web95.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/exports.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/format.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/p3.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/platform.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/polling.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/supportUrl.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/trpc.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/validateInput.js.map +1 -0
- package/build/pay/packages/connectkit/src/wallets/index.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/wallets/useWallets.js +106 -35
- package/build/pay/packages/connectkit/src/wallets/useWallets.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/wallets/walletConfigs.js +80 -76
- package/build/pay/packages/connectkit/src/wallets/walletConfigs.js.map +1 -0
- package/build/{connectkit → pay/packages/connectkit}/src/world-mini-app/WorldPayButton.js +19 -2
- package/build/pay/packages/connectkit/src/world-mini-app/WorldPayButton.js.map +1 -0
- package/build/pay/packages/connectkit/src/world-mini-app/promptWorldPayment.js.map +1 -0
- package/build/pay/packages/connectkit/src/world-mini-app/useWithdrawToWorld.js +76 -0
- package/build/pay/packages/connectkit/src/world-mini-app/useWithdrawToWorld.js.map +1 -0
- package/build/pay/packages/connectkit/src/world-mini-app/useWorldSignIn.js +74 -0
- package/build/pay/packages/connectkit/src/world-mini-app/useWorldSignIn.js.map +1 -0
- package/build/pay/packages/connectkit/src/world.js +4 -0
- package/build/{connectkit → pay/packages/connectkit}/src/world.js.map +1 -1
- package/build/src/assets/chains.js +26 -1
- package/build/src/assets/chains.js.map +1 -1
- package/build/src/components/Common/PoweredByFooter/index.js +10 -37
- package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +3 -0
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
- package/build/src/components/Pages/Confirmation/index.js +8 -10
- package/build/src/components/Pages/Confirmation/index.js.map +1 -1
- package/build/src/defaultConfig.js +2 -1
- package/build/src/defaultConfig.js.map +1 -1
- package/build/src/payment/paymentEffects.js +9 -7
- package/build/src/payment/paymentEffects.js.map +1 -1
- package/build/src/provider/DaimoPayProvider.js +9 -1
- package/build/src/provider/DaimoPayProvider.js.map +1 -1
- package/build/src/provider/PaymentProvider.js +9 -3
- package/build/src/provider/PaymentProvider.js.map +1 -1
- package/build/src/utils/polling.js +14 -5
- package/build/src/utils/polling.js.map +1 -1
- package/package.json +2 -2
- package/build/connectkit/src/assets/MobileWithLogos.js.map +0 -1
- package/build/connectkit/src/assets/ScanIconWithLogos.js.map +0 -1
- 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.map +0 -1
- package/build/connectkit/src/assets/logos.js.map +0 -1
- package/build/connectkit/src/assets/wave.js.map +0 -1
- package/build/connectkit/src/components/Common/Alert/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Alert/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +0 -1
- package/build/connectkit/src/components/Common/AmountInput/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Avatar/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Avatar/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/BrowserIcon/index.js.map +0 -1
- package/build/connectkit/src/components/Common/BrowserIcon/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/Button/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Button/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/Chain/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Chain/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/ChainSelectList/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ChainSelectList/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/CircleTimer.js.map +0 -1
- package/build/connectkit/src/components/Common/ConnectorList/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ConnectorList/styles.js.map +0 -1
- 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.map +0 -1
- package/build/connectkit/src/components/Common/CustomQRCode/index.js.map +0 -1
- package/build/connectkit/src/components/Common/CustomQRCode/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/FitText/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Modal/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Modal/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/OptionsList/index.js.map +0 -1
- package/build/connectkit/src/components/Common/OptionsList/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/OrderHeader/index.js.map +0 -1
- package/build/connectkit/src/components/Common/PaymentBreakdown/index.js.map +0 -1
- 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.map +0 -1
- package/build/connectkit/src/components/Common/ScrollArea/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Spinner/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Spinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/SwitchButton/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ThemedButton/index.js.map +0 -1
- package/build/connectkit/src/components/Common/ThemedButton/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/TokenChainLogo/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Tooltip/index.js.map +0 -1
- package/build/connectkit/src/components/Common/Tooltip/styles.js.map +0 -1
- package/build/connectkit/src/components/Common/WalletChainLogo/index.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayButton/index.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayButton/styles.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +0 -1
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +0 -1
- 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.map +0 -1
- package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +0 -1
- package/build/connectkit/src/components/Pages/About/graphics.js.map +0 -1
- package/build/connectkit/src/components/Pages/About/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/About/styles.js.map +0 -1
- package/build/connectkit/src/components/Pages/Confirmation/index.js.map +0 -1
- 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.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.map +0 -1
- package/build/connectkit/src/components/Pages/Onboarding/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Onboarding/styles.js.map +0 -1
- package/build/connectkit/src/components/Pages/PayWithToken/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectExchange/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectMethod/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectToken/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectWalletChain/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SelectZKP/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/SwitchNetworks/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/WaitingExternal/index.js.map +0 -1
- package/build/connectkit/src/components/Pages/WaitingWallet/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/CircleSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +0 -1
- package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +0 -1
- package/build/connectkit/src/components/Spinners/styles.js.map +0 -1
- package/build/connectkit/src/constants/defaultTheme.js.map +0 -1
- package/build/connectkit/src/constants/routes.js.map +0 -1
- package/build/connectkit/src/defaultConfig.js.map +0 -1
- package/build/connectkit/src/defaultConnectors.js.map +0 -1
- package/build/connectkit/src/hooks/useChainIsSupported.js.map +0 -1
- package/build/connectkit/src/hooks/useChains.js.map +0 -1
- package/build/connectkit/src/hooks/useConnect.js.map +0 -1
- 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.map +0 -1
- package/build/connectkit/src/hooks/useDaimoPayStatus.js.map +0 -1
- package/build/connectkit/src/hooks/useDaimoPayUI.js.map +0 -1
- package/build/connectkit/src/hooks/useDepositAddressOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useEnsFallbackConfig.js.map +0 -1
- package/build/connectkit/src/hooks/useExternalPaymentOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useFitText.js.map +0 -1
- package/build/connectkit/src/hooks/useFocusTrap.js.map +0 -1
- package/build/connectkit/src/hooks/useIsMobile.js.map +0 -1
- package/build/connectkit/src/hooks/useIsMounted.js.map +0 -1
- package/build/connectkit/src/hooks/useLastConnector.js.map +0 -1
- package/build/connectkit/src/hooks/useLocales.js.map +0 -1
- package/build/connectkit/src/hooks/useLockBodyScroll.js.map +0 -1
- package/build/connectkit/src/hooks/useOrderUsdLimits.js.map +0 -1
- package/build/connectkit/src/hooks/usePayContext.js.map +0 -1
- package/build/connectkit/src/hooks/usePaymentState.js.map +0 -1
- package/build/connectkit/src/hooks/usePrevious.js.map +0 -1
- package/build/connectkit/src/hooks/useSolanaPaymentOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useTokenOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useUntronAvailability.js.map +0 -1
- package/build/connectkit/src/hooks/useWalletPaymentOptions.js.map +0 -1
- package/build/connectkit/src/hooks/useWindowSize.js.map +0 -1
- package/build/connectkit/src/localizations/index.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ar-AE.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ca-AD.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ee-EE.js.map +0 -1
- package/build/connectkit/src/localizations/locales/en-US.js.map +0 -1
- package/build/connectkit/src/localizations/locales/es-ES.js.map +0 -1
- package/build/connectkit/src/localizations/locales/fa-IR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/fr-FR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ja-JP.js.map +0 -1
- package/build/connectkit/src/localizations/locales/pt-BR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/ru-RU.js.map +0 -1
- package/build/connectkit/src/localizations/locales/tr-TR.js.map +0 -1
- package/build/connectkit/src/localizations/locales/vi-VN.js.map +0 -1
- package/build/connectkit/src/localizations/locales/zh-CN.js.map +0 -1
- package/build/connectkit/src/payment/paymentEffects.js.map +0 -1
- package/build/connectkit/src/payment/paymentFsm.js.map +0 -1
- package/build/connectkit/src/payment/paymentStore.js.map +0 -1
- package/build/connectkit/src/payment/paymentUtils.js.map +0 -1
- package/build/connectkit/src/provider/DaimoPayProvider.js.map +0 -1
- package/build/connectkit/src/provider/PayContext.js.map +0 -1
- package/build/connectkit/src/provider/PaymentProvider.js.map +0 -1
- package/build/connectkit/src/provider/SolanaContextProvider.js.map +0 -1
- package/build/connectkit/src/provider/Web3ContextProvider.js.map +0 -1
- package/build/connectkit/src/stateStore.js.map +0 -1
- package/build/connectkit/src/styles/defaultTheme.js.map +0 -1
- package/build/connectkit/src/styles/index.js.map +0 -1
- package/build/connectkit/src/styles/styled/index.js.map +0 -1
- package/build/connectkit/src/styles/themes/base.js.map +0 -1
- package/build/connectkit/src/styles/themes/index.js.map +0 -1
- package/build/connectkit/src/styles/themes/midnight.js.map +0 -1
- package/build/connectkit/src/styles/themes/minimal.js.map +0 -1
- package/build/connectkit/src/styles/themes/nouns.js.map +0 -1
- package/build/connectkit/src/styles/themes/retro.js.map +0 -1
- package/build/connectkit/src/styles/themes/rounded.js.map +0 -1
- package/build/connectkit/src/styles/themes/soft.js.map +0 -1
- package/build/connectkit/src/styles/themes/web95.js.map +0 -1
- package/build/connectkit/src/utils/exports.js.map +0 -1
- package/build/connectkit/src/utils/format.js.map +0 -1
- package/build/connectkit/src/utils/index.js.map +0 -1
- package/build/connectkit/src/utils/p3.js.map +0 -1
- package/build/connectkit/src/utils/platform.js.map +0 -1
- package/build/connectkit/src/utils/polling.js.map +0 -1
- package/build/connectkit/src/utils/supportUrl.js.map +0 -1
- package/build/connectkit/src/utils/trpc.js.map +0 -1
- package/build/connectkit/src/utils/validateInput.js.map +0 -1
- package/build/connectkit/src/wallets/index.js.map +0 -1
- package/build/connectkit/src/wallets/useWallets.js.map +0 -1
- package/build/connectkit/src/wallets/walletConfigs.js.map +0 -1
- package/build/connectkit/src/world-mini-app/WorldPayButton.js.map +0 -1
- package/build/connectkit/src/world-mini-app/promptWorldPayment.js.map +0 -1
- package/build/connectkit/src/world.js +0 -2
- 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/{connectkit → pay/packages/connectkit}/src/assets/MobileWithLogos.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/assets/ScanIconWithLogos.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/assets/browsers.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/assets/icons.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/assets/wave.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Alert/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Alert/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/AmountInput/AmountInputField.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/AmountInput/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Avatar/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Avatar/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/BrowserIcon/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/BrowserIcon/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Button/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Button/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Chain/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Chain/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ChainSelectList/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ChainSelectList/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/CircleTimer.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ConnectorList/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/FitText/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Modal/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/OptionsList/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/OptionsList/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/PaymentBreakdown/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Portal/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ScrollArea/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ScrollArea/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Spinner/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Spinner/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/SwitchButton/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ThemedButton/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/ThemedButton/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/TokenChainLogo/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Tooltip/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/Tooltip/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Common/WalletChainLogo/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/DaimoPayButton/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/DaimoPayModal/ConnectWithInjector/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/About/graphics.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/About/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/About/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Error/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/MobileConnectors/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Onboarding/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Onboarding/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/PayWithToken/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectAmount/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectDepositAddressAmount/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectExternalAmount/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectWalletChain/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SelectZKP/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Solana/ConnectorSolana/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Solana/PayWithSolanaToken/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/Solana/SelectSolanaAmount/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/SwitchNetworks/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Pages/WaitingWallet/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/CircleSpinner/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/CircleSpinner/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/ExternalPaymentSpinner/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/SquircleSpinner/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/SquircleSpinner/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/TokenLogoSpinner/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/TokenLogoSpinner/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/WalletPaymentSpinner/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/components/Spinners/styles.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/constants/defaultTheme.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/defaultConnectors.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useChainIsSupported.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useChains.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useConnect.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useConnectCallback.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useDaimoPayStatus.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useDaimoPayUI.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useDepositAddressOptions.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useEnsFallbackConfig.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useFitText.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useFocusTrap.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useIsMobile.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useIsMounted.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useLastConnector.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useLocales.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useLockBodyScroll.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useOrderUsdLimits.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/usePayContext.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/usePrevious.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useTokenOptions.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useUntronAvailability.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useWalletPaymentOptions.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/hooks/useWindowSize.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/index.js.map +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/ar-AE.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/ca-AD.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/ee-EE.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/fa-IR.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/fr-FR.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/ja-JP.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/ru-RU.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/tr-TR.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/vi-VN.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/localizations/locales/zh-CN.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/payment/paymentStore.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/payment/paymentUtils.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/provider/PayContext.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/provider/PaymentProvider.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/provider/SolanaContextProvider.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/provider/Web3ContextProvider.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/stateStore.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/defaultTheme.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/styled/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/base.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/midnight.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/minimal.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/nouns.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/retro.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/rounded.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/soft.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/styles/themes/web95.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/exports.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/format.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/p3.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/platform.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/polling.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/supportUrl.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/trpc.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/utils/validateInput.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/wallets/index.js +0 -0
- /package/build/{connectkit → pay/packages/connectkit}/src/world-mini-app/promptWorldPayment.js +0 -0
|
@@ -1,61 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { motion } from 'framer-motion';
|
|
3
|
-
import { useState, useEffect } from 'react';
|
|
4
|
-
import { keyframes } from 'styled-components';
|
|
5
3
|
import useLocales from '../../../hooks/useLocales.js';
|
|
6
4
|
import styled from '../../../styles/styled/index.js';
|
|
7
5
|
|
|
8
6
|
const PoweredByFooter = ({
|
|
9
|
-
|
|
10
|
-
showNeedHelpImmediately
|
|
7
|
+
receiptUrl
|
|
11
8
|
} = {}) => {
|
|
12
|
-
const [supportVisible, setSupportVisible] = useState(showNeedHelpImmediately);
|
|
13
9
|
const locales = useLocales();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx(TextLink, { href: supportVisible ? supportUrl : void 0, children: /* @__PURE__ */ jsx("span", { children: supportVisible ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
|
-
"Need help? ",
|
|
23
|
-
/* @__PURE__ */ jsx(Underline, { children: "Contact support" })
|
|
24
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
25
|
-
locales.poweredBy,
|
|
26
|
-
" Daimo Pay"
|
|
27
|
-
] }) }) }) });
|
|
10
|
+
return /* @__PURE__ */ jsxs(Container, { children: [
|
|
11
|
+
receiptUrl ? /* @__PURE__ */ jsx(TextLink, { href: receiptUrl, target: "_blank", rel: "noreferrer", children: /* @__PURE__ */ jsx(Underline, { children: "Show receipt" }) }) : /* @__PURE__ */ jsxs(TextLink, { children: [
|
|
12
|
+
locales.poweredBy,
|
|
13
|
+
" Daimo Pay"
|
|
14
|
+
] }),
|
|
15
|
+
/* @__PURE__ */ jsx("div", { className: "h-4" })
|
|
16
|
+
] });
|
|
28
17
|
};
|
|
29
18
|
const Container = styled(motion.div)`
|
|
30
19
|
text-align: center;
|
|
31
20
|
margin-top: 16px;
|
|
32
21
|
margin-bottom: -4px;
|
|
33
22
|
`;
|
|
34
|
-
keyframes`
|
|
35
|
-
0%{ opacity:0; }
|
|
36
|
-
100%{ opacity:1; }
|
|
37
|
-
`;
|
|
38
23
|
const TextLink = styled.a`
|
|
39
24
|
appearance: none;
|
|
40
25
|
user-select: none;
|
|
41
|
-
display: inline-flex;
|
|
42
|
-
align-items: center;
|
|
43
|
-
justify-content: center;
|
|
44
|
-
gap: 10px;
|
|
45
|
-
height: 42px;
|
|
46
|
-
padding: 0 16px;
|
|
47
|
-
border-radius: 6px;
|
|
48
|
-
background: none;
|
|
49
26
|
color: var(--ck-body-color-muted);
|
|
50
27
|
text-decoration-color: var(--ck-body-color-muted);
|
|
28
|
+
text-decoration: none;
|
|
51
29
|
font-size: 15px;
|
|
52
30
|
line-height: 18px;
|
|
53
31
|
font-weight: 400;
|
|
54
|
-
|
|
55
|
-
span {
|
|
56
|
-
opacity: 1;
|
|
57
|
-
transition: opacity 300ms ease;
|
|
58
|
-
}
|
|
59
32
|
`;
|
|
60
33
|
const Underline = styled(motion.span)`
|
|
61
34
|
text-underline-offset: 2px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Common/PoweredByFooter/index.tsx"],"sourcesContent":["import { motion } from \"framer-motion\";\nimport
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Common/PoweredByFooter/index.tsx"],"sourcesContent":["import { motion } from \"framer-motion\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport styled from \"../../../styles/styled\";\n\nconst PoweredByFooter = ({\n receiptUrl,\n}: {\n receiptUrl?: string;\n} = {}) => {\n const locales = useLocales();\n return (\n <Container>\n {receiptUrl ? (\n <TextLink href={receiptUrl} target=\"_blank\" rel=\"noreferrer\">\n <Underline>Show receipt</Underline>\n </TextLink>\n ) : (\n <TextLink>{locales.poweredBy} Daimo Pay</TextLink>\n )}\n <div className=\"h-4\" />\n </Container>\n );\n};\n\nconst Container = styled(motion.div)`\n text-align: center;\n margin-top: 16px;\n margin-bottom: -4px;\n`;\n\nconst TextLink = styled.a`\n appearance: none;\n user-select: none;\n color: var(--ck-body-color-muted);\n text-decoration-color: var(--ck-body-color-muted);\n text-decoration: none;\n font-size: 15px;\n line-height: 18px;\n font-weight: 400;\n`;\n\nconst Underline = styled(motion.span)`\n text-underline-offset: 2px;\n text-decoration: underline;\n`;\n\nexport default PoweredByFooter;\n"],"names":[],"mappings":";;;;;AAIA,MAAM,kBAAkB,CAAC;AAAA,EACvB,UAAA;AACF,CAAA,GAEI,EAAO,KAAA;AACT,EAAA,MAAM,UAAU,UAAW,EAAA,CAAA;AAC3B,EAAA,4BACG,SACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,UAAA,mBACE,GAAA,CAAA,QAAA,EAAA,EAAS,IAAM,EAAA,UAAA,EAAY,QAAO,QAAS,EAAA,GAAA,EAAI,YAC9C,EAAA,QAAA,kBAAA,GAAA,CAAC,SAAU,EAAA,EAAA,QAAA,EAAA,cAAA,EAAY,CACzB,EAAA,CAAA,wBAEC,QAAU,EAAA,EAAA,QAAA,EAAA;AAAA,MAAQ,OAAA,CAAA,SAAA;AAAA,MAAU,YAAA;AAAA,KAAU,EAAA,CAAA;AAAA,oBAEzC,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,KAAM,EAAA,CAAA;AAAA,GACvB,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAMnC,MAAM,WAAW,MAAO,CAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAWxB,MAAM,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
|
|
@@ -36,6 +36,9 @@ const ConnectWithQRCode = ({
|
|
|
36
36
|
const url = externalUrl ?? // QR code opens eg. Binance
|
|
37
37
|
walletDeeplink ?? // open in wallet
|
|
38
38
|
`https://pay.daimo.com/pay?id=${payId}&mode=browser`;
|
|
39
|
+
if (context.debugMode) {
|
|
40
|
+
console.log("[DEBUG] QR Code URL:", url);
|
|
41
|
+
}
|
|
39
42
|
const isUniquePaymentOption = context.uniquePaymentMethodPage === ROUTES.CONNECT || context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;
|
|
40
43
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
41
44
|
isUniquePaymentOption && /* @__PURE__ */ jsx(OrderHeader, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectWithQRCode.js","sources":["../../../../src/components/DaimoPayModal/ConnectWithQRCode.tsx"],"sourcesContent":["import React from \"react\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\n\nimport { ModalContent, PageContent } from \"../Common/Modal/styles\";\n\nimport ScanIconWithLogos from \"../../assets/ScanIconWithLogos\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useLocales from \"../../hooks/useLocales\";\nimport CustomQRCode from \"../Common/CustomQRCode\";\n\nimport { writeDaimoPayOrderID } from \"@daimo/pay-common\";\nimport { SquircleIcon } from \"../../assets/logos\";\nimport MobileWithLogos from \"../../assets/MobileWithLogos\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { WALLET_ID_MOBILE_WALLETS } from \"../../constants/wallets\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { useWallet } from \"../../wallets/useWallets\";\nimport { OrderHeader } from \"../Common/OrderHeader\";\n\n/**\n * Continues a Daimo Pay flow in another app.\n * - If the pendingConnectorId is a mobile wallet, deeplink directly into that\n * wallet. This opens the flow in eg. the Rainbow in-app browser, letting the\n * user finish the flow in a single app switch instead of multiple.\n * - If the pendingConnectorId is MOBILE_WALLETS_CONNECTOR_ID, then show a QR\n * that the user can scan from their phone. This opens the flow in eg. mobile\n * Safari, letting them pick which app they want to use & finish there.\n * - If the pendingConnectorId is a walletConfig, then show a QR that the user can scan\n * from their phone. This deeplinks into the wallet's checkout page\n */\nconst ConnectWithQRCode: React.FC<{ externalUrl?: string | null }> = ({\n externalUrl,\n}) => {\n const context = usePayContext();\n const { isAndroid, isIOS } = useIsMobile();\n const { pendingConnectorId, paymentState } = context;\n const walletFromConnectors = useWallet(pendingConnectorId ?? \"\");\n // Fall back to selectedWallet for wallets from walletConfigs (e.g. unique payment options)\n const wallet = walletFromConnectors || paymentState.selectedWallet;\n const externalOption = paymentState.selectedExternalOption;\n const pay = useDaimoPay();\n\n const locales = useLocales({\n CONNECTORNAME: wallet?.name ?? externalOption?.id,\n });\n\n if (!wallet && !externalOption)\n return <> No wallet or external option found </>;\n\n const payId = pay.order ? writeDaimoPayOrderID(pay.order.id) : \"\";\n const platform = isIOS ? \"ios\" : isAndroid ? \"android\" : \"other\";\n\n const isDesktopLinkToMobileWallets = wallet?.id === WALLET_ID_MOBILE_WALLETS;\n const walletDeeplink = wallet?.getDaimoPayDeeplink\n ? wallet.getDaimoPayDeeplink(payId, platform)\n : null;\n\n const url =\n externalUrl ?? // QR code opens eg. Binance\n walletDeeplink ?? // open in wallet\n `https://pay.daimo.com/pay?id=${payId}&mode=browser`; // browser\n\n // Show order header only for unique payment option scenario\n const isUniquePaymentOption =\n context.uniquePaymentMethodPage === ROUTES.CONNECT ||\n context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;\n\n return (\n <PageContent>\n {isUniquePaymentOption && <OrderHeader />}\n <ModalContent style={{ paddingBottom: 8 }}>\n <CustomQRCode\n value={url}\n image={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : wallet?.id ? (\n wallet.icon\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"22.5%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"var(--ck-body-background)\",\n transform: \"scale(1.3) translateY(5%)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n )\n }\n tooltipMessage={\n isDesktopLinkToMobileWallets ? (\n <>\n <ScanIconWithLogos />\n <span>\n Finish the payment <br />\n on your mobile phone\n </span>\n </>\n ) : (\n <>\n <ScanIconWithLogos\n logo={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n wallet?.icon\n )\n }\n />\n <span>{locales.scanScreen_tooltip_default}</span>\n </>\n )\n }\n />\n </ModalContent>\n </PageContent>\n );\n};\n\nexport default ConnectWithQRCode;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA8BA,MAAM,oBAA+D,CAAC;AAAA,EACpE,WAAA;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,UAAU,aAAc,EAAA,CAAA;AAC9B,EAAA,MAAM,EAAE,SAAA,EAAW,KAAM,EAAA,GAAI,WAAY,EAAA,CAAA;AACzC,EAAM,MAAA,EAAE,kBAAoB,EAAA,YAAA,EAAiB,GAAA,OAAA,CAAA;AAC7C,EAAM,MAAA,oBAAA,GAAuB,SAAU,CAAA,kBAAA,IAAsB,EAAE,CAAA,CAAA;AAE/D,EAAM,MAAA,MAAA,GAAS,wBAAwB,YAAa,CAAA,cAAA,CAAA;AACpD,EAAA,MAAM,iBAAiB,YAAa,CAAA,sBAAA,CAAA;AACpC,EAAA,MAAM,MAAM,WAAY,EAAA,CAAA;AAExB,EAAA,MAAM,UAAU,UAAW,CAAA;AAAA,IACzB,aAAA,EAAe,MAAQ,EAAA,IAAA,IAAQ,cAAgB,EAAA,EAAA;AAAA,GAChD,CAAA,CAAA;AAED,EAAI,IAAA,CAAC,UAAU,CAAC,cAAA;AACd,IAAA,uCAAS,QAAoC,EAAA,sCAAA,EAAA,CAAA,CAAA;AAE/C,EAAA,MAAM,QAAQ,GAAI,CAAA,KAAA,GAAQ,qBAAqB,GAAI,CAAA,KAAA,CAAM,EAAE,CAAI,GAAA,EAAA,CAAA;AAC/D,EAAA,MAAM,QAAW,GAAA,KAAA,GAAQ,KAAQ,GAAA,SAAA,GAAY,SAAY,GAAA,OAAA,CAAA;AAEzD,EAAM,MAAA,4BAAA,GAA+B,QAAQ,EAAO,KAAA,wBAAA,CAAA;AACpD,EAAA,MAAM,iBAAiB,MAAQ,EAAA,mBAAA,GAC3B,OAAO,mBAAoB,CAAA,KAAA,EAAO,QAAQ,CAC1C,GAAA,IAAA,CAAA;AAEJ,EAAA,MAAM,GACJ,GAAA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,gCAAgC,KAAK,CAAA,aAAA,CAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"ConnectWithQRCode.js","sources":["../../../../src/components/DaimoPayModal/ConnectWithQRCode.tsx"],"sourcesContent":["import React from \"react\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\n\nimport { ModalContent, PageContent } from \"../Common/Modal/styles\";\n\nimport ScanIconWithLogos from \"../../assets/ScanIconWithLogos\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useLocales from \"../../hooks/useLocales\";\nimport CustomQRCode from \"../Common/CustomQRCode\";\n\nimport { writeDaimoPayOrderID } from \"@daimo/pay-common\";\nimport { SquircleIcon } from \"../../assets/logos\";\nimport MobileWithLogos from \"../../assets/MobileWithLogos\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { WALLET_ID_MOBILE_WALLETS } from \"../../constants/wallets\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { useWallet } from \"../../wallets/useWallets\";\nimport { OrderHeader } from \"../Common/OrderHeader\";\n\n/**\n * Continues a Daimo Pay flow in another app.\n * - If the pendingConnectorId is a mobile wallet, deeplink directly into that\n * wallet. This opens the flow in eg. the Rainbow in-app browser, letting the\n * user finish the flow in a single app switch instead of multiple.\n * - If the pendingConnectorId is MOBILE_WALLETS_CONNECTOR_ID, then show a QR\n * that the user can scan from their phone. This opens the flow in eg. mobile\n * Safari, letting them pick which app they want to use & finish there.\n * - If the pendingConnectorId is a walletConfig, then show a QR that the user can scan\n * from their phone. This deeplinks into the wallet's checkout page\n */\nconst ConnectWithQRCode: React.FC<{ externalUrl?: string | null }> = ({\n externalUrl,\n}) => {\n const context = usePayContext();\n const { isAndroid, isIOS } = useIsMobile();\n const { pendingConnectorId, paymentState } = context;\n const walletFromConnectors = useWallet(pendingConnectorId ?? \"\");\n // Fall back to selectedWallet for wallets from walletConfigs (e.g. unique payment options)\n const wallet = walletFromConnectors || paymentState.selectedWallet;\n const externalOption = paymentState.selectedExternalOption;\n const pay = useDaimoPay();\n\n const locales = useLocales({\n CONNECTORNAME: wallet?.name ?? externalOption?.id,\n });\n\n if (!wallet && !externalOption)\n return <> No wallet or external option found </>;\n\n const payId = pay.order ? writeDaimoPayOrderID(pay.order.id) : \"\";\n const platform = isIOS ? \"ios\" : isAndroid ? \"android\" : \"other\";\n\n const isDesktopLinkToMobileWallets = wallet?.id === WALLET_ID_MOBILE_WALLETS;\n const walletDeeplink = wallet?.getDaimoPayDeeplink\n ? wallet.getDaimoPayDeeplink(payId, platform)\n : null;\n\n const url =\n externalUrl ?? // QR code opens eg. Binance\n walletDeeplink ?? // open in wallet\n `https://pay.daimo.com/pay?id=${payId}&mode=browser`; // browser\n\n if (context.debugMode) {\n console.log(\"[DEBUG] QR Code URL:\", url);\n }\n\n // Show order header only for unique payment option scenario\n const isUniquePaymentOption =\n context.uniquePaymentMethodPage === ROUTES.CONNECT ||\n context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;\n\n return (\n <PageContent>\n {isUniquePaymentOption && <OrderHeader />}\n <ModalContent style={{ paddingBottom: 8 }}>\n <CustomQRCode\n value={url}\n image={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : wallet?.id ? (\n wallet.icon\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"22.5%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"var(--ck-body-background)\",\n transform: \"scale(1.3) translateY(5%)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n )\n }\n tooltipMessage={\n isDesktopLinkToMobileWallets ? (\n <>\n <ScanIconWithLogos />\n <span>\n Finish the payment <br />\n on your mobile phone\n </span>\n </>\n ) : (\n <>\n <ScanIconWithLogos\n logo={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n wallet?.icon\n )\n }\n />\n <span>{locales.scanScreen_tooltip_default}</span>\n </>\n )\n }\n />\n </ModalContent>\n </PageContent>\n );\n};\n\nexport default ConnectWithQRCode;\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { useMemo, useEffect } from 'react';
|
|
3
3
|
import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
4
4
|
import { PageContent, ModalContent, ModalH1, Link, ModalBody } from '../../Common/Modal/styles.js';
|
|
5
|
-
import { getOrderDestChainId, assertNotNull, getOrderSourceChainId, assert, getChainExplorerTxUrl } from '@daimo/pay-common';
|
|
5
|
+
import { getOrderDestChainId, assertNotNull, getOrderSourceChainId, assert, getChainExplorerTxUrl, writeDaimoPayOrderID } from '@daimo/pay-common';
|
|
6
6
|
import { motion } from 'framer-motion';
|
|
7
7
|
import { TickIcon, LoadingCircleIcon } from '../../../assets/icons.js';
|
|
8
8
|
import { useDaimoPay } from '../../../hooks/useDaimoPay.js';
|
|
@@ -38,6 +38,12 @@ const Confirmation = () => {
|
|
|
38
38
|
onSuccess();
|
|
39
39
|
}
|
|
40
40
|
}, [done, onSuccess]);
|
|
41
|
+
let supportUrl, receiptUrl;
|
|
42
|
+
if (order?.id != null) {
|
|
43
|
+
const screen = done ? "Confirmed" : "Confirming";
|
|
44
|
+
supportUrl = getSupportUrl(order.id.toString(), screen);
|
|
45
|
+
receiptUrl = `https://pay.daimo.com/receipt?id=${writeDaimoPayOrderID(BigInt(order.id))}`;
|
|
46
|
+
}
|
|
41
47
|
return /* @__PURE__ */ jsx(
|
|
42
48
|
PageContent,
|
|
43
49
|
{
|
|
@@ -64,15 +70,7 @@ const Confirmation = () => {
|
|
|
64
70
|
/* @__PURE__ */ jsx(ModalH1, { children: /* @__PURE__ */ jsx(Link, { href: txURL, target: "_blank", rel: "noopener noreferrer", children: "Payment Completed" }) }),
|
|
65
71
|
confirmationMessage && /* @__PURE__ */ jsx(ModalBody, { children: confirmationMessage })
|
|
66
72
|
] }),
|
|
67
|
-
/* @__PURE__ */ jsx(
|
|
68
|
-
PoweredByFooter,
|
|
69
|
-
{
|
|
70
|
-
supportUrl: showContactSupport ? getSupportUrl(
|
|
71
|
-
order?.id?.toString() ?? "",
|
|
72
|
-
done ? "Confirmed" : "Confirming"
|
|
73
|
-
) : void 0
|
|
74
|
-
}
|
|
75
|
-
)
|
|
73
|
+
/* @__PURE__ */ jsx(PoweredByFooter, { supportUrl, receiptUrl })
|
|
76
74
|
]
|
|
77
75
|
}
|
|
78
76
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Confirmation/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport {\n Link,\n ModalBody,\n ModalContent,\n ModalH1,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport {\n assert,\n assertNotNull,\n getChainExplorerTxUrl,\n getOrderDestChainId,\n getOrderSourceChainId,\n} from \"@daimo/pay-common\";\nimport { motion } from \"framer-motion\";\nimport { Hex } from \"viem\";\nimport { LoadingCircleIcon, TickIcon } from \"../../../assets/icons\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport styled from \"../../../styles/styled\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\n\nconst Confirmation: React.FC = () => {\n const { showContactSupport, confirmationMessage, onSuccess } =\n usePayContext();\n const { order, paymentState } = useDaimoPay();\n\n const { done, txURL } = useMemo(() => {\n if (\n paymentState === \"payment_completed\" ||\n paymentState === \"payment_bounced\"\n ) {\n let finalChainId: number;\n let finalTxHash: Hex | null;\n\n if (order.passedToAddress == null) {\n finalChainId = getOrderDestChainId(order);\n finalTxHash = order.destFastFinishTxHash ?? order.destClaimTxHash;\n } else {\n finalChainId = assertNotNull(getOrderSourceChainId(order));\n finalTxHash = order.sourceInitiateTxHash;\n }\n assert(\n finalTxHash != null,\n `[CONFIRMATION] paymentState: ${paymentState}, but missing txHash`,\n );\n const txURL = getChainExplorerTxUrl(finalChainId, finalTxHash);\n\n return { done: true, txURL };\n }\n return { done: false, txURL: undefined };\n }, [paymentState, order]);\n\n useEffect(() => {\n if (done) {\n onSuccess();\n }\n }, [done, onSuccess]);\n\n return (\n <PageContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <ModalContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingBottom: 0,\n }}\n >\n <AnimationContainer>\n <InsetContainer>\n <Spinner $status={done} />\n <SuccessIcon $status={done} />\n </InsetContainer>\n </AnimationContainer>\n\n {!done ? (\n <ModalH1>Confirming...</ModalH1>\n ) : (\n <>\n <ModalH1>\n <Link href={txURL} target=\"_blank\" rel=\"noopener noreferrer\">\n Payment Completed\n </Link>\n </ModalH1>\n {confirmationMessage && (\n <ModalBody>{confirmationMessage}</ModalBody>\n )}\n </>\n )}\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Confirmation/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport {\n Link,\n ModalBody,\n ModalContent,\n ModalH1,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport {\n assert,\n assertNotNull,\n getChainExplorerTxUrl,\n getOrderDestChainId,\n getOrderSourceChainId,\n writeDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { motion } from \"framer-motion\";\nimport { Hex } from \"viem\";\nimport { LoadingCircleIcon, TickIcon } from \"../../../assets/icons\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport styled from \"../../../styles/styled\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\n\nconst Confirmation: React.FC = () => {\n const { showContactSupport, confirmationMessage, onSuccess } =\n usePayContext();\n const { order, paymentState } = useDaimoPay();\n\n const { done, txURL } = useMemo(() => {\n if (\n paymentState === \"payment_completed\" ||\n paymentState === \"payment_bounced\"\n ) {\n let finalChainId: number;\n let finalTxHash: Hex | null;\n\n if (order.passedToAddress == null) {\n finalChainId = getOrderDestChainId(order);\n finalTxHash = order.destFastFinishTxHash ?? order.destClaimTxHash;\n } else {\n finalChainId = assertNotNull(getOrderSourceChainId(order));\n finalTxHash = order.sourceInitiateTxHash;\n }\n assert(\n finalTxHash != null,\n `[CONFIRMATION] paymentState: ${paymentState}, but missing txHash`,\n );\n const txURL = getChainExplorerTxUrl(finalChainId, finalTxHash);\n\n return { done: true, txURL };\n }\n return { done: false, txURL: undefined };\n }, [paymentState, order]);\n\n useEffect(() => {\n if (done) {\n onSuccess();\n }\n }, [done, onSuccess]);\n\n // Footer\n let supportUrl: string | undefined, receiptUrl: string | undefined;\n if (order?.id != null) {\n const screen = done ? \"Confirmed\" : \"Confirming\";\n supportUrl = getSupportUrl(order.id.toString(), screen);\n receiptUrl = `https://pay.daimo.com/receipt?id=${writeDaimoPayOrderID(BigInt(order.id))}`;\n }\n\n return (\n <PageContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <ModalContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingBottom: 0,\n }}\n >\n <AnimationContainer>\n <InsetContainer>\n <Spinner $status={done} />\n <SuccessIcon $status={done} />\n </InsetContainer>\n </AnimationContainer>\n\n {!done ? (\n <ModalH1>Confirming...</ModalH1>\n ) : (\n <>\n <ModalH1>\n <Link href={txURL} target=\"_blank\" rel=\"noopener noreferrer\">\n Payment Completed\n </Link>\n </ModalH1>\n {confirmationMessage && (\n <ModalBody>{confirmationMessage}</ModalBody>\n )}\n </>\n )}\n <PoweredByFooter supportUrl={supportUrl} receiptUrl={receiptUrl} />\n </ModalContent>\n </PageContent>\n );\n};\n\nconst AnimationContainer = styled(motion.div)`\n position: relative;\n width: 100px;\n height: 100px;\n transition: transform 0.5s ease-in-out;\n margin-bottom: 16px;\n`;\n\nconst InsetContainer = styled(motion.div)`\n position: absolute;\n overflow: hidden;\n inset: 6px;\n border-radius: 50px;\n background: var(--ck-body-background);\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n position: absolute;\n width: 100%;\n height: 100%;\n }\n`;\n\nconst SuccessIcon = styled(TickIcon)<{ $status: boolean }>`\n color: var(--ck-body-color-valid);\n transition: all 0.2s ease-in-out;\n position: absolute;\n opacity: ${(props) => (props.$status ? 1 : 0)};\n transform: ${(props) => (props.$status ? \"scale(1)\" : \"scale(0.5)\")};\n`;\n\nconst Spinner = styled(LoadingCircleIcon)<{ $status: boolean }>`\n position: absolute;\n transition: all 0.2s ease-in-out;\n animation: rotateSpinner 400ms linear infinite;\n opacity: ${(props) => (props.$status ? 0 : 1)};\n\n @keyframes rotateSpinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nexport default Confirmation;\n"],"names":["txURL"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { http } from 'wagmi';
|
|
2
|
-
import { arbitrum, base, bsc, celo, linea, mainnet, polygon, optimism, scroll, worldchain } from 'wagmi/chains';
|
|
2
|
+
import { arbitrum, base, bsc, celo, linea, gnosis, mainnet, polygon, optimism, scroll, worldchain } from 'wagmi/chains';
|
|
3
3
|
import defaultConnectors from './defaultConnectors.js';
|
|
4
4
|
|
|
5
5
|
let globalAppName;
|
|
@@ -10,6 +10,7 @@ const REQUIRED_CHAINS = [
|
|
|
10
10
|
bsc,
|
|
11
11
|
celo,
|
|
12
12
|
linea,
|
|
13
|
+
gnosis,
|
|
13
14
|
mainnet,
|
|
14
15
|
polygon,
|
|
15
16
|
optimism,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.js","sources":["../../src/defaultConfig.ts"],"sourcesContent":["import { type CreateConfigParameters } from \"@wagmi/core\";\nimport { CreateConnectorFn, http } from \"wagmi\";\nimport {\n arbitrum,\n base,\n bsc,\n celo,\n Chain,\n linea,\n mainnet,\n optimism,\n polygon,\n scroll,\n worldchain,\n} from \"wagmi/chains\";\nimport { CoinbaseWalletParameters } from \"wagmi/connectors\";\n\nimport defaultConnectors from \"./defaultConnectors\";\n\n// TODO: Move these to a provider rather than global variable\nlet globalAppName: string;\nlet globalAppIcon: string;\nexport const getAppName = () => globalAppName;\nexport const getAppIcon = () => globalAppIcon;\n\ntype DefaultConfigProps = {\n appName: string;\n appIcon?: string;\n appDescription?: string;\n appUrl?: string;\n\n // Coinbase Wallet preference\n coinbaseWalletPreference?: CoinbaseWalletParameters<\"4\">[\"preference\"];\n\n // Additional connectors to use\n additionalConnectors?: CreateConnectorFn[];\n} & Partial<CreateConfigParameters>;\n\nexport const REQUIRED_CHAINS: CreateConfigParameters[\"chains\"] = [\n arbitrum,\n base,\n bsc,\n celo,\n linea,\n mainnet,\n polygon,\n optimism,\n scroll,\n worldchain,\n];\n\n/** Daimo Pay recommended config, for use with wagmi's createConfig(). */\nconst defaultConfig = ({\n appName = \"Daimo Pay\",\n appIcon,\n appDescription,\n appUrl,\n additionalConnectors,\n chains = REQUIRED_CHAINS,\n client,\n ...props\n}: DefaultConfigProps): CreateConfigParameters => {\n globalAppName = appName;\n if (appIcon) globalAppIcon = appIcon;\n\n const paddedChains: [Chain, ...Chain[]] = [...chains];\n for (const chain of REQUIRED_CHAINS) {\n if (!paddedChains.includes(chain)) {\n paddedChains.push(chain);\n }\n }\n\n const paddedTransports: CreateConfigParameters[\"transports\"] = {};\n for (const chain of paddedChains) {\n if (!props?.transports?.[chain.id]) {\n // Auto inject http transport if not provided for a chain\n paddedTransports[chain.id] = http();\n } else {\n paddedTransports[chain.id] = props.transports[chain.id];\n }\n }\n\n const connectors: CreateConfigParameters[\"connectors\"] =\n props?.connectors ??\n defaultConnectors({\n app: {\n name: appName,\n icon: appIcon,\n description: appDescription,\n url: appUrl,\n },\n additionalConnectors,\n });\n\n const config: CreateConfigParameters<any, any> = {\n ...props,\n chains: paddedChains,\n transports: paddedTransports,\n connectors,\n };\n\n return config;\n};\n\nexport default defaultConfig;\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"defaultConfig.js","sources":["../../src/defaultConfig.ts"],"sourcesContent":["import { type CreateConfigParameters } from \"@wagmi/core\";\nimport { CreateConnectorFn, http } from \"wagmi\";\nimport {\n arbitrum,\n base,\n bsc,\n celo,\n Chain,\n gnosis,\n linea,\n mainnet,\n optimism,\n polygon,\n scroll,\n worldchain,\n} from \"wagmi/chains\";\nimport { CoinbaseWalletParameters } from \"wagmi/connectors\";\n\nimport defaultConnectors from \"./defaultConnectors\";\n\n// TODO: Move these to a provider rather than global variable\nlet globalAppName: string;\nlet globalAppIcon: string;\nexport const getAppName = () => globalAppName;\nexport const getAppIcon = () => globalAppIcon;\n\ntype DefaultConfigProps = {\n appName: string;\n appIcon?: string;\n appDescription?: string;\n appUrl?: string;\n\n // Coinbase Wallet preference\n coinbaseWalletPreference?: CoinbaseWalletParameters<\"4\">[\"preference\"];\n\n // Additional connectors to use\n additionalConnectors?: CreateConnectorFn[];\n} & Partial<CreateConfigParameters>;\n\nexport const REQUIRED_CHAINS: CreateConfigParameters[\"chains\"] = [\n arbitrum,\n base,\n bsc,\n celo,\n linea,\n gnosis,\n mainnet,\n polygon,\n optimism,\n scroll,\n worldchain,\n];\n\n/** Daimo Pay recommended config, for use with wagmi's createConfig(). */\nconst defaultConfig = ({\n appName = \"Daimo Pay\",\n appIcon,\n appDescription,\n appUrl,\n additionalConnectors,\n chains = REQUIRED_CHAINS,\n client,\n ...props\n}: DefaultConfigProps): CreateConfigParameters => {\n globalAppName = appName;\n if (appIcon) globalAppIcon = appIcon;\n\n const paddedChains: [Chain, ...Chain[]] = [...chains];\n for (const chain of REQUIRED_CHAINS) {\n if (!paddedChains.includes(chain)) {\n paddedChains.push(chain);\n }\n }\n\n const paddedTransports: CreateConfigParameters[\"transports\"] = {};\n for (const chain of paddedChains) {\n if (!props?.transports?.[chain.id]) {\n // Auto inject http transport if not provided for a chain\n paddedTransports[chain.id] = http();\n } else {\n paddedTransports[chain.id] = props.transports[chain.id];\n }\n }\n\n const connectors: CreateConfigParameters[\"connectors\"] =\n props?.connectors ??\n defaultConnectors({\n app: {\n name: appName,\n icon: appIcon,\n description: appDescription,\n url: appUrl,\n },\n additionalConnectors,\n });\n\n const config: CreateConfigParameters<any, any> = {\n ...props,\n chains: paddedChains,\n transports: paddedTransports,\n connectors,\n };\n\n return config;\n};\n\nexport default defaultConfig;\n"],"names":[],"mappings":";;;;AAqBA,IAAI,aAAA,CAAA;AAEG,MAAM,aAAa,MAAM,cAAA;AAgBzB,MAAM,eAAoD,GAAA;AAAA,EAC/D,QAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AACF,EAAA;AAGA,MAAM,gBAAgB,CAAC;AAAA,EACrB,OAAU,GAAA,WAAA;AAAA,EACV,OAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAS,GAAA,eAAA;AAAA,EACT,MAAA;AAAA,EACA,GAAG,KAAA;AACL,CAAkD,KAAA;AAChD,EAAgB,aAAA,GAAA,OAAA,CAAA;AAGhB,EAAM,MAAA,YAAA,GAAoC,CAAC,GAAG,MAAM,CAAA,CAAA;AACpD,EAAA,KAAA,MAAW,SAAS,eAAiB,EAAA;AACnC,IAAA,IAAI,CAAC,YAAA,CAAa,QAAS,CAAA,KAAK,CAAG,EAAA;AACjC,MAAA,YAAA,CAAa,KAAK,KAAK,CAAA,CAAA;AAAA,KACzB;AAAA,GACF;AAEA,EAAA,MAAM,mBAAyD,EAAC,CAAA;AAChE,EAAA,KAAA,MAAW,SAAS,YAAc,EAAA;AAChC,IAAA,IAAI,CAAC,KAAA,EAAO,UAAa,GAAA,KAAA,CAAM,EAAE,CAAG,EAAA;AAElC,MAAiB,gBAAA,CAAA,KAAA,CAAM,EAAE,CAAA,GAAI,IAAK,EAAA,CAAA;AAAA,KAC7B,MAAA;AACL,MAAA,gBAAA,CAAiB,MAAM,EAAE,CAAA,GAAI,KAAM,CAAA,UAAA,CAAW,MAAM,EAAE,CAAA,CAAA;AAAA,KACxD;AAAA,GACF;AAEA,EAAM,MAAA,UAAA,GACJ,KAAO,EAAA,UAAA,IACP,iBAAkB,CAAA;AAAA,IAChB,GAAK,EAAA;AAAA,MACH,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,cAAA;AAAA,MACb,GAAK,EAAA,MAAA;AAAA,KACP;AAAA,IACA,oBAAA;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,MAAM,MAA2C,GAAA;AAAA,IAC/C,GAAG,KAAA;AAAA,IACH,MAAQ,EAAA,YAAA;AAAA,IACR,UAAY,EAAA,gBAAA;AAAA,IACZ,UAAA;AAAA,GACF,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
|
@@ -7,17 +7,17 @@ function stopPoller(key) {
|
|
|
7
7
|
pollers.get(key)?.();
|
|
8
8
|
pollers.delete(key);
|
|
9
9
|
}
|
|
10
|
-
function attachPaymentEffectHandlers(store, trpc, log) {
|
|
10
|
+
function attachPaymentEffectHandlers(store, trpc, log, debugMode) {
|
|
11
11
|
const unsubscribe = store.subscribe(({ prev, next, event }) => {
|
|
12
12
|
log(
|
|
13
13
|
`[EFFECT] processing effects for event ${event.type} on state transition ${prev.type} -> ${next.type}`
|
|
14
14
|
);
|
|
15
15
|
if (prev.type !== next.type) {
|
|
16
16
|
if (next.type === "payment_unpaid") {
|
|
17
|
-
pollFindPayments(store, trpc, next.order.id);
|
|
17
|
+
pollFindPayments(store, trpc, next.order.id, debugMode);
|
|
18
18
|
}
|
|
19
19
|
if (next.type === "payment_started") {
|
|
20
|
-
pollRefreshOrder(store, trpc, next.order.id);
|
|
20
|
+
pollRefreshOrder(store, trpc, next.order.id, debugMode);
|
|
21
21
|
}
|
|
22
22
|
if (["payment_completed", "payment_bounced", "error", "idle"].includes(
|
|
23
23
|
next.type
|
|
@@ -77,7 +77,7 @@ function attachPaymentEffectHandlers(store, trpc, log) {
|
|
|
77
77
|
};
|
|
78
78
|
return cleanup;
|
|
79
79
|
}
|
|
80
|
-
async function pollFindPayments(store, trpc, orderId) {
|
|
80
|
+
async function pollFindPayments(store, trpc, orderId, debugMode) {
|
|
81
81
|
const key = `${"find_source_payment" /* FIND_SOURCE_PAYMENT */}:${orderId}`;
|
|
82
82
|
const stopPolling = startPolling({
|
|
83
83
|
key,
|
|
@@ -92,11 +92,12 @@ async function pollFindPayments(store, trpc, orderId) {
|
|
|
92
92
|
store.dispatch({ type: "order_refreshed", order });
|
|
93
93
|
},
|
|
94
94
|
onError: () => {
|
|
95
|
-
}
|
|
95
|
+
},
|
|
96
|
+
debugMode
|
|
96
97
|
});
|
|
97
98
|
pollers.set(key, stopPolling);
|
|
98
99
|
}
|
|
99
|
-
async function pollRefreshOrder(store, trpc, orderId) {
|
|
100
|
+
async function pollRefreshOrder(store, trpc, orderId, debugMode) {
|
|
100
101
|
const key = `${"refresh_order" /* REFRESH_ORDER */}:${orderId}`;
|
|
101
102
|
const stopPolling = startPolling({
|
|
102
103
|
key,
|
|
@@ -112,7 +113,8 @@ async function pollRefreshOrder(store, trpc, orderId) {
|
|
|
112
113
|
store.dispatch({ type: "order_refreshed", order });
|
|
113
114
|
},
|
|
114
115
|
onError: () => {
|
|
115
|
-
}
|
|
116
|
+
},
|
|
117
|
+
debugMode
|
|
116
118
|
});
|
|
117
119
|
pollers.set(key, stopPolling);
|
|
118
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymentEffects.js","sources":["../../../src/payment/paymentEffects.ts"],"sourcesContent":["import {\n assert,\n DaimoPayOrderMode,\n DaimoPayOrderWithOrg,\n getOrderDestChainId,\n readDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { formatUnits, getAddress } from \"viem\";\nimport { PollHandle, startPolling } from \"../utils/polling\";\nimport { TrpcClient } from \"../utils/trpc\";\nimport { PaymentEvent, PaymentState } from \"./paymentFsm\";\nimport { PaymentStore } from \"./paymentStore\";\n\n// Maps poller identifier to poll handle which terminates the poller\n// key = `${type}:${orderId}`\nconst pollers = new Map<string, PollHandle>();\n\nenum PollerType {\n FIND_SOURCE_PAYMENT = \"find_source_payment\",\n REFRESH_ORDER = \"refresh_order\",\n}\n\nfunction stopPoller(key: string) {\n pollers.get(key)?.();\n pollers.delete(key);\n}\n\n/**\n * Add a subscriber to the payment store that runs side effects in response to\n * events.\n *\n * @param store The payment store to subscribe to.\n * @param trpc TRPC client pointing to the Daimo Pay API.\n * @param log The logger to use for logging.\n * @returns A function that can be used to unsubscribe from the store.\n */\nexport function attachPaymentEffectHandlers(\n store: PaymentStore,\n trpc: TrpcClient,\n log: (msg: string) => void,\n): () => void {\n const unsubscribe = store.subscribe(({ prev, next, event }) => {\n log(\n `[EFFECT] processing effects for event ${event.type} on state transition ${prev.type} -> ${next.type}`,\n );\n /* --------------------------------------------------\n * State-driven effects\n * -------------------------------------------------- */\n if (prev.type !== next.type) {\n // Start watching for source payment\n if (next.type === \"payment_unpaid\") {\n pollFindPayments(store, trpc, next.order.id);\n }\n\n // Refresh the order to watch for destination processing\n if (next.type === \"payment_started\") {\n pollRefreshOrder(store, trpc, next.order.id);\n }\n\n // Stop all pollers when the payment flow is completed or reset\n if (\n [\"payment_completed\", \"payment_bounced\", \"error\", \"idle\"].includes(\n next.type,\n )\n ) {\n if (\"order\" in prev && prev.order) {\n stopPoller(`${PollerType.FIND_SOURCE_PAYMENT}:${prev.order.id}`);\n stopPoller(`${PollerType.REFRESH_ORDER}:${prev.order.id}`);\n }\n }\n }\n\n /* --------------------------------------------------\n * Event-driven effects\n * -------------------------------------------------- */\n switch (event.type) {\n case \"set_pay_params\":\n runSetPayParamsEffects(store, trpc, event);\n break;\n case \"set_pay_id\":\n runSetPayIdEffects(store, trpc, event);\n break;\n case \"hydrate_order\": {\n if (prev.type === \"preview\") {\n runHydratePayParamsEffects(store, trpc, prev, event);\n } else if (prev.type === \"unhydrated\") {\n runHydratePayIdEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySourceEffects(store, trpc, prev);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_ethereum_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPayEthereumSourceEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_solana_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySolanaSourceEffects(store, trpc, prev, event);\n }\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n break;\n }\n default:\n break;\n }\n });\n\n const cleanup = () => {\n unsubscribe();\n pollers.forEach((_, key) => stopPoller(key));\n log(\"[EFFECT] unsubscribed from payment store and stopped all pollers\");\n };\n\n return cleanup;\n}\n\nasync function pollFindPayments(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n) {\n const key = `${PollerType.FIND_SOURCE_PAYMENT}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 1_000,\n pollFn: () => trpc.findOrderPayments.query({ orderId: orderId.toString() }),\n onResult: (order) => {\n const state = store.getState();\n if (state.type !== \"payment_unpaid\") {\n stopPolling();\n return;\n }\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function pollRefreshOrder(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n) {\n const key = `${PollerType.REFRESH_ORDER}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 300,\n pollFn: () => trpc.getOrder.query({ id: orderId.toString() }),\n onResult: (res) => {\n const state = store.getState();\n // Check that we're still in the payment_started state\n if (state.type !== \"payment_started\") {\n stopPolling();\n return;\n }\n\n const order = res.order;\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function runSetPayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_params\" }>,\n) {\n const payParams = event.payParams;\n // toUnits is undefined if and only if we're in deposit flow.\n // Set dummy value for deposit flow, since user can edit the amount.\n const toUnits = payParams.toUnits == null ? \"0\" : payParams.toUnits;\n\n // Validate payParams.\n assert(payParams.appId.length > 0, \"PayParams: appId required\");\n const isDepositFlow = payParams.toUnits == null;\n assert(\n !isDepositFlow || payParams.externalId == null,\n \"PayParams: externalId unsupported in deposit mode\",\n );\n\n try {\n const orderPreview = await trpc.previewOrder.query({\n appId: payParams.appId,\n toChain: payParams.toChain,\n toToken: payParams.toToken,\n toUnits,\n toAddress: payParams.toAddress,\n toCallData: payParams.toCallData,\n isAmountEditable: payParams.toUnits == null,\n metadata: {\n intent: payParams.intent ?? \"Pay\",\n items: [],\n payer: {\n paymentOptions: payParams.paymentOptions,\n preferredChains: payParams.preferredChains,\n preferredTokens: payParams.preferredTokens,\n evmChains: payParams.evmChains,\n passthroughTokens: payParams.passthroughTokens,\n },\n },\n externalId: payParams.externalId,\n userMetadata: payParams.metadata,\n refundAddress: payParams.refundAddress,\n });\n\n store.dispatch({\n type: \"preview_generated\",\n // TODO: Properly type this and fix hacky type casting\n order: orderPreview as unknown as DaimoPayOrderWithOrg,\n payParamsData: {\n appId: payParams.appId,\n },\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runSetPayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_id\" }>,\n) {\n try {\n const { order } = await trpc.getOrder.query({\n id: readDaimoPayOrderID(event.payId).toString(),\n });\n\n store.dispatch({\n type: \"order_loaded\",\n order,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runHydratePayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"preview\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n const toUnits = formatUnits(\n BigInt(order.destFinalCallTokenAmount.amount),\n order.destFinalCallTokenAmount.token.decimals,\n );\n try {\n const { hydratedOrder } = await trpc.createOrder.mutate({\n appId: prev.payParamsData.appId,\n paymentInput: {\n id: order.id.toString(),\n toChain: getOrderDestChainId(order),\n toToken: getAddress(order.destFinalCallTokenAmount.token.token),\n toUnits,\n toAddress: getAddress(order.destFinalCall.to),\n toCallData: order.destFinalCall.data,\n isAmountEditable: order.mode === DaimoPayOrderMode.CHOOSE_AMOUNT,\n metadata: order.metadata,\n userMetadata: order.userMetadata,\n externalId: order.externalId ?? undefined,\n },\n // Prefer the refund address passed to this function, if specified. This\n // is for cases where the user pays from an EOA. Otherwise, use the refund\n // address specified by the dev.\n refundAddress: event.refundAddress ?? prev.order.refundAddr ?? undefined,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runHydratePayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"unhydrated\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n try {\n const { hydratedOrder } = await trpc.hydrateOrder.query({\n id: order.id.toString(),\n refundAddress: event.refundAddress,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.findOrderPayments.query({\n orderId: orderId.toString(),\n });\n store.dispatch({ type: \"order_refreshed\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPayEthereumSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_ethereum_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSourcePayment.mutate({\n orderId: orderId.toString(),\n sourceInitiateTxHash: event.paymentTxHash,\n sourceChainId: event.sourceChainId,\n sourceFulfillerAddr: event.payerAddress,\n sourceToken: event.sourceToken,\n sourceAmount: event.sourceAmount.toString(),\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySolanaSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_solana_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSolanaSourcePayment.mutate({\n orderId: orderId.toString(),\n startIntentTxHash: event.paymentTxHash,\n token: event.sourceToken,\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paymentEffects.js","sources":["../../../src/payment/paymentEffects.ts"],"sourcesContent":["import {\n assert,\n DaimoPayOrderMode,\n DaimoPayOrderWithOrg,\n getOrderDestChainId,\n readDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { formatUnits, getAddress } from \"viem\";\nimport { PollHandle, startPolling } from \"../utils/polling\";\nimport { TrpcClient } from \"../utils/trpc\";\nimport { PaymentEvent, PaymentState } from \"./paymentFsm\";\nimport { PaymentStore } from \"./paymentStore\";\n\n// Maps poller identifier to poll handle which terminates the poller\n// key = `${type}:${orderId}`\nconst pollers = new Map<string, PollHandle>();\n\nenum PollerType {\n FIND_SOURCE_PAYMENT = \"find_source_payment\",\n REFRESH_ORDER = \"refresh_order\",\n}\n\nfunction stopPoller(key: string) {\n pollers.get(key)?.();\n pollers.delete(key);\n}\n\n/**\n * Add a subscriber to the payment store that runs side effects in response to\n * events.\n *\n * @param store The payment store to subscribe to.\n * @param trpc TRPC client pointing to the Daimo Pay API.\n * @param log The logger to use for logging.\n * @param debugMode Whether to enable debug mode to log polling activity.\n * @returns A function that can be used to unsubscribe from the store.\n */\nexport function attachPaymentEffectHandlers(\n store: PaymentStore,\n trpc: TrpcClient,\n log: (msg: string) => void,\n debugMode: boolean,\n): () => void {\n const unsubscribe = store.subscribe(({ prev, next, event }) => {\n log(\n `[EFFECT] processing effects for event ${event.type} on state transition ${prev.type} -> ${next.type}`,\n );\n /* --------------------------------------------------\n * State-driven effects\n * -------------------------------------------------- */\n if (prev.type !== next.type) {\n // Start watching for source payment\n if (next.type === \"payment_unpaid\") {\n pollFindPayments(store, trpc, next.order.id, debugMode);\n }\n\n // Refresh the order to watch for destination processing\n if (next.type === \"payment_started\") {\n pollRefreshOrder(store, trpc, next.order.id, debugMode);\n }\n\n // Stop all pollers when the payment flow is completed or reset\n if (\n [\"payment_completed\", \"payment_bounced\", \"error\", \"idle\"].includes(\n next.type,\n )\n ) {\n if (\"order\" in prev && prev.order) {\n stopPoller(`${PollerType.FIND_SOURCE_PAYMENT}:${prev.order.id}`);\n stopPoller(`${PollerType.REFRESH_ORDER}:${prev.order.id}`);\n }\n }\n }\n\n /* --------------------------------------------------\n * Event-driven effects\n * -------------------------------------------------- */\n switch (event.type) {\n case \"set_pay_params\":\n runSetPayParamsEffects(store, trpc, event);\n break;\n case \"set_pay_id\":\n runSetPayIdEffects(store, trpc, event);\n break;\n case \"hydrate_order\": {\n if (prev.type === \"preview\") {\n runHydratePayParamsEffects(store, trpc, prev, event);\n } else if (prev.type === \"unhydrated\") {\n runHydratePayIdEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySourceEffects(store, trpc, prev);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_ethereum_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPayEthereumSourceEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_solana_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySolanaSourceEffects(store, trpc, prev, event);\n }\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n break;\n }\n default:\n break;\n }\n });\n\n const cleanup = () => {\n unsubscribe();\n pollers.forEach((_, key) => stopPoller(key));\n log(\"[EFFECT] unsubscribed from payment store and stopped all pollers\");\n };\n\n return cleanup;\n}\n\nasync function pollFindPayments(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n debugMode: boolean,\n) {\n const key = `${PollerType.FIND_SOURCE_PAYMENT}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 1_000,\n pollFn: () => trpc.findOrderPayments.query({ orderId: orderId.toString() }),\n onResult: (order) => {\n const state = store.getState();\n if (state.type !== \"payment_unpaid\") {\n stopPolling();\n return;\n }\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n debugMode,\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function pollRefreshOrder(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n debugMode: boolean,\n) {\n const key = `${PollerType.REFRESH_ORDER}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 300,\n pollFn: () => trpc.getOrder.query({ id: orderId.toString() }),\n onResult: (res) => {\n const state = store.getState();\n // Check that we're still in the payment_started state\n if (state.type !== \"payment_started\") {\n stopPolling();\n return;\n }\n\n const order = res.order;\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n debugMode,\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function runSetPayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_params\" }>,\n) {\n const payParams = event.payParams;\n // toUnits is undefined if and only if we're in deposit flow.\n // Set dummy value for deposit flow, since user can edit the amount.\n const toUnits = payParams.toUnits == null ? \"0\" : payParams.toUnits;\n\n // Validate payParams.\n assert(payParams.appId.length > 0, \"PayParams: appId required\");\n const isDepositFlow = payParams.toUnits == null;\n assert(\n !isDepositFlow || payParams.externalId == null,\n \"PayParams: externalId unsupported in deposit mode\",\n );\n\n try {\n const orderPreview = await trpc.previewOrder.query({\n appId: payParams.appId,\n toChain: payParams.toChain,\n toToken: payParams.toToken,\n toUnits,\n toAddress: payParams.toAddress,\n toCallData: payParams.toCallData,\n isAmountEditable: payParams.toUnits == null,\n metadata: {\n intent: payParams.intent ?? \"Pay\",\n items: [],\n payer: {\n paymentOptions: payParams.paymentOptions,\n preferredChains: payParams.preferredChains,\n preferredTokens: payParams.preferredTokens,\n evmChains: payParams.evmChains,\n passthroughTokens: payParams.passthroughTokens,\n },\n },\n externalId: payParams.externalId,\n userMetadata: payParams.metadata,\n refundAddress: payParams.refundAddress,\n });\n\n store.dispatch({\n type: \"preview_generated\",\n // TODO: Properly type this and fix hacky type casting\n order: orderPreview as unknown as DaimoPayOrderWithOrg,\n payParamsData: {\n appId: payParams.appId,\n },\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runSetPayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_id\" }>,\n) {\n try {\n const { order } = await trpc.getOrder.query({\n id: readDaimoPayOrderID(event.payId).toString(),\n });\n\n store.dispatch({\n type: \"order_loaded\",\n order,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runHydratePayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"preview\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n const toUnits = formatUnits(\n BigInt(order.destFinalCallTokenAmount.amount),\n order.destFinalCallTokenAmount.token.decimals,\n );\n try {\n const { hydratedOrder } = await trpc.createOrder.mutate({\n appId: prev.payParamsData.appId,\n paymentInput: {\n id: order.id.toString(),\n toChain: getOrderDestChainId(order),\n toToken: getAddress(order.destFinalCallTokenAmount.token.token),\n toUnits,\n toAddress: getAddress(order.destFinalCall.to),\n toCallData: order.destFinalCall.data,\n isAmountEditable: order.mode === DaimoPayOrderMode.CHOOSE_AMOUNT,\n metadata: order.metadata,\n userMetadata: order.userMetadata,\n externalId: order.externalId ?? undefined,\n },\n // Prefer the refund address passed to this function, if specified. This\n // is for cases where the user pays from an EOA. Otherwise, use the refund\n // address specified by the dev.\n refundAddress: event.refundAddress ?? prev.order.refundAddr ?? undefined,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runHydratePayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"unhydrated\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n try {\n const { hydratedOrder } = await trpc.hydrateOrder.query({\n id: order.id.toString(),\n refundAddress: event.refundAddress,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.findOrderPayments.query({\n orderId: orderId.toString(),\n });\n store.dispatch({ type: \"order_refreshed\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPayEthereumSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_ethereum_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSourcePayment.mutate({\n orderId: orderId.toString(),\n sourceInitiateTxHash: event.paymentTxHash,\n sourceChainId: event.sourceChainId,\n sourceFulfillerAddr: event.payerAddress,\n sourceToken: event.sourceToken,\n sourceAmount: event.sourceAmount.toString(),\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySolanaSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_solana_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSolanaSourcePayment.mutate({\n orderId: orderId.toString(),\n startIntentTxHash: event.paymentTxHash,\n token: event.sourceToken,\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -285,7 +285,15 @@ const DaimoPayProvider = (props) => {
|
|
|
285
285
|
},
|
|
286
286
|
[props.debugMode]
|
|
287
287
|
);
|
|
288
|
-
return /* @__PURE__ */ jsx(
|
|
288
|
+
return /* @__PURE__ */ jsx(
|
|
289
|
+
PaymentProvider,
|
|
290
|
+
{
|
|
291
|
+
payApiUrl,
|
|
292
|
+
log,
|
|
293
|
+
debugMode: props.debugMode,
|
|
294
|
+
children: /* @__PURE__ */ jsx(SolanaContextProvider, { solanaRpcUrl: props.solanaRpcUrl, children: /* @__PURE__ */ jsx(DaimoPayUIProvider, { ...props, payApiUrl, log }) })
|
|
295
|
+
}
|
|
296
|
+
);
|
|
289
297
|
};
|
|
290
298
|
|
|
291
299
|
export { DaimoPayProvider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaimoPayProvider.js","sources":["../../../src/provider/DaimoPayProvider.tsx"],"sourcesContent":["import {\n DaimoPayOrderMode,\n DaimoPayOrderStatusSource,\n debugJson,\n} from \"@daimo/pay-common\";\nimport { Buffer } from \"buffer\";\nimport React, {\n createElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ThemeProvider } from \"styled-components\";\nimport { WagmiContext } from \"wagmi\";\n\nimport { DaimoPayModal } from \"../components/DaimoPayModal\";\nimport { ROUTES } from \"../constants/routes\";\nimport { REQUIRED_CHAINS } from \"../defaultConfig\";\nimport { useChains } from \"../hooks/useChains\";\nimport {\n useConnectCallback,\n useConnectCallbackProps,\n} from \"../hooks/useConnectCallback\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePaymentState } from \"../hooks/usePaymentState\";\nimport { PaymentContext, PaymentProvider } from \"../provider/PaymentProvider\";\nimport defaultTheme from \"../styles/defaultTheme\";\nimport {\n CustomTheme,\n DaimoPayContextOptions,\n DaimoPayModalOptions,\n Languages,\n Mode,\n Theme,\n} from \"../types\";\nimport { createTrpcClient } from \"../utils/trpc\";\nimport { setInWalletPaymentUrlFromApiUrl } from \"../wallets/walletConfigs\";\nimport { PayContext, PayContextValue } from \"./PayContext\";\nimport {\n SolanaContextProvider,\n SolanaWalletName,\n} from \"./SolanaContextProvider\";\nimport { Web3ContextProvider } from \"./Web3ContextProvider\";\n\ntype DaimoPayUIProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl: string;\n log: (msg: string, ...props: any[]) => void;\n} & useConnectCallbackProps;\n\nconst DaimoPayUIProvider = ({\n children,\n theme = \"auto\",\n mode = \"auto\",\n customTheme,\n options,\n onConnect,\n onDisconnect,\n debugMode = false,\n payApiUrl,\n log,\n}: DaimoPayUIProviderProps) => {\n if (!React.useContext(PaymentContext)) {\n throw Error(\"DaimoPayProvider must be within a PaymentProvider\");\n }\n\n if (!React.useContext(WagmiContext)) {\n throw Error(\"DaimoPayProvider must be within a WagmiProvider\");\n }\n\n // Only allow for mounting DaimoPayProvider once, so we avoid weird global\n // state collisions.\n if (React.useContext(PayContext)) {\n throw new Error(\n \"Multiple, nested usages of DaimoPayProvider detected. Please use only one.\",\n );\n }\n\n useConnectCallback({\n onConnect,\n onDisconnect,\n });\n\n const chains = useChains();\n\n for (const requiredChain of REQUIRED_CHAINS) {\n if (!chains.some((c) => c.id === requiredChain.id)) {\n throw new Error(\n `Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(\", \")}. Use \\`getDefaultConfig\\` to automatically configure required chains.`,\n );\n }\n }\n\n // Default config options\n const defaultOptions: DaimoPayContextOptions = {\n language: \"en-US\",\n hideBalance: false,\n hideTooltips: false,\n hideQuestionMarkCTA: false,\n hideRecentBadge: false,\n avoidLayoutShift: true,\n embedGoogleFonts: false,\n truncateLongENSAddress: true,\n reducedMotion: false,\n disclaimer: null,\n bufferPolyfill: true,\n customAvatar: undefined,\n initialChainId: undefined,\n enforceSupportedChains: false,\n ethereumOnboardingUrl: undefined,\n walletOnboardingUrl: undefined,\n overlayBlur: undefined,\n disableMobileInjector: false,\n };\n\n const opts: DaimoPayContextOptions = Object.assign(\n {},\n defaultOptions,\n options,\n );\n\n if (typeof window !== \"undefined\") {\n // Buffer Polyfill, needed for bundlers that don't provide Node polyfills (e.g CRA, Vite, etc.)\n if (opts.bufferPolyfill) window.Buffer = window.Buffer ?? Buffer;\n\n // Some bundlers may need `global` and `process.env` polyfills as well\n // Not implemented here to avoid unexpected behaviors, but leaving example here for future reference\n /*\n * window.global = window.global ?? window;\n * window.process = window.process ?? { env: {} };\n */\n }\n\n const pay = useDaimoPay();\n\n const [ckTheme, setTheme] = useState<Theme>(theme);\n const [ckMode, setMode] = useState<Mode>(mode);\n const [ckCustomTheme, setCustomTheme] = useState<CustomTheme | undefined>(\n customTheme ?? {},\n );\n const [ckLang, setLang] = useState<Languages>(\"en-US\");\n const [disableMobileInjector, setDisableMobileInjector] = useState<boolean>(\n opts.disableMobileInjector ?? false,\n );\n\n const onOpenRef = useRef<(() => void) | undefined>();\n const onCloseRef = useRef<(() => void) | undefined>();\n const setOnOpen = useCallback((fn?: () => void) => {\n onOpenRef.current = fn;\n }, []);\n const setOnClose = useCallback((fn?: () => void) => {\n onCloseRef.current = fn;\n }, []);\n const [open, setOpenState] = useState<boolean>(false);\n const [lockPayParams, setLockPayParams] = useState<boolean>(false);\n const [paymentCompleted, setPaymentCompleted] = useState<boolean>(false);\n const [route, setRouteState] = useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [modalOptions, setModalOptions] = useState<DaimoPayModalOptions>();\n\n // Daimo Pay context\n const [uniquePaymentMethodPage, setUniquePaymentMethodPage] =\n useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [pendingConnectorId, setPendingConnectorId] = useState<\n string | undefined\n >(undefined);\n // Track sessions. Each generates separate intent IDs unless using externalId.\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const [solanaConnector, setSolanaConnector] = useState<\n SolanaWalletName | undefined\n >();\n\n // Other configuration\n const [errorMessage, setErrorMessage] = useState<\n string | React.ReactNode | null\n >(\"\");\n const [showContactSupport, setShowContactSupport] = useState<boolean>(true);\n const [confirmationMessage, setConfirmationMessage] = useState<\n string | undefined\n >(undefined);\n const [redirectReturnUrl, setRedirectReturnUrl] = useState<\n string | undefined\n >(undefined);\n // Connect to the Daimo Pay TRPC API\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n const [resize, onResize] = useState<number>(0);\n\n useEffect(() => {\n setInWalletPaymentUrlFromApiUrl(payApiUrl);\n }, [payApiUrl]);\n\n const setOpen = useCallback(\n (open: boolean, meta?: Record<string, any>) => {\n setOpenState(open);\n\n // Lock pay params starting from the first time the modal is opened to\n // prevent the daimo pay order from changing from under the user\n if (open) {\n setLockPayParams(true);\n }\n // Reset payment state on close if resetOnSuccess is true\n if (!open && paymentCompleted && modalOptions?.resetOnSuccess) {\n setPaymentCompleted(false);\n setLockPayParams(false);\n paymentState.resetOrder();\n }\n\n // Log the open/close event\n trpc.nav.mutate({\n action: open ? \"navOpenPay\" : \"navClosePay\",\n orderId: pay.order?.id?.toString(),\n data: meta ?? {},\n });\n\n // Run the onOpen and onClose callbacks\n if (open) onOpenRef.current?.();\n else onCloseRef.current?.();\n },\n // We don't have good caching on paymentState, so don't include it as a dep\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [trpc, pay.order?.id, modalOptions?.resetOnSuccess, paymentCompleted],\n );\n\n // Callback when a payment is successfully completed (regardless of whether\n // the final call succeeded or bounced)\n const onSuccess = useCallback(() => {\n if (modalOptions?.closeOnSuccess) {\n setTimeout(() => setOpen(false, { event: \"wait-success\" }), 1000);\n }\n setPaymentCompleted(true);\n }, [modalOptions?.closeOnSuccess, setOpen, setPaymentCompleted]);\n\n const setRoute = useCallback(\n (route: ROUTES, data?: Record<string, any>) => {\n const action = route.replace(\"daimoPay\", \"\");\n log(`[SET ROUTE] ${action} ${pay.order?.id} ${debugJson(data ?? {})}`);\n trpc.nav.mutate({\n action,\n orderId: pay.order?.id?.toString(),\n data: data ?? {},\n });\n setRouteState(route);\n },\n [trpc, pay.order?.id, log],\n );\n\n // Other Configuration\n useEffect(() => setTheme(theme), [theme]);\n useEffect(() => setLang(opts.language || \"en-US\"), [opts.language]);\n useEffect(\n () => setDisableMobileInjector(opts.disableMobileInjector ?? false),\n [opts.disableMobileInjector],\n );\n useEffect(() => setErrorMessage(null), [route, open]);\n\n // TODO: replace with dispatcher pattern; remove hook slop\n const paymentState = usePaymentState({\n trpc,\n lockPayParams,\n setRoute,\n log,\n redirectReturnUrl,\n });\n\n const showPayment = async (modalOptions: DaimoPayModalOptions) => {\n const id = pay.order?.id;\n log(\n `[PAY] showing modal ${debugJson({ id, modalOptions, paymentFsmState: pay.paymentState })}`,\n );\n\n setModalOptions(modalOptions);\n setOpen(true);\n if (modalOptions.connectedWalletOnly) {\n paymentState.setTokenMode(\"all\");\n }\n\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION);\n } else if (modalOptions.connectedWalletOnly) {\n setRoute(ROUTES.SELECT_TOKEN);\n } else {\n setRoute(ROUTES.SELECT_METHOD);\n }\n };\n\n // Watch when the order gets paid and navigate to confirmation\n // ...if underpaid, go to the deposit addr screen, let the user finish paying.\n const isUnderpaid =\n pay.order?.mode === DaimoPayOrderMode.HYDRATED &&\n pay.order.sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT &&\n pay.order.sourceTokenAmount != null;\n useEffect(() => {\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION, { event: \"payment-started\" });\n } else if (isUnderpaid) {\n paymentState.setSelectedDepositAddressOption(undefined);\n setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.paymentState, setRoute, isUnderpaid]);\n\n const value: PayContextValue = {\n theme: ckTheme,\n setTheme,\n mode: ckMode,\n setMode,\n customTheme,\n setCustomTheme,\n lang: ckLang,\n setLang,\n disableMobileInjector,\n setDisableMobileInjector,\n setOnOpen,\n setOnClose,\n open,\n setOpen,\n route,\n setRoute,\n // Daimo Pay context\n uniquePaymentMethodPage,\n setUniquePaymentMethodPage,\n pendingConnectorId,\n setPendingConnectorId,\n sessionId,\n solanaConnector,\n setSolanaConnector,\n onConnect,\n // Other configuration\n options: opts,\n errorMessage,\n onSuccess,\n showContactSupport,\n setShowContactSupport,\n confirmationMessage,\n setConfirmationMessage,\n redirectReturnUrl,\n setRedirectReturnUrl,\n debugMode,\n log,\n displayError: (message: string | React.ReactNode | null, code?: any) => {\n setErrorMessage(message);\n console.log(\"---------DAIMOPAY DEBUG---------\");\n console.log(message);\n if (code) console.table(code);\n console.log(\"---------/DAIMOPAY DEBUG---------\");\n },\n resize,\n triggerResize: () => onResize((prev) => prev + 1),\n\n // Above: generic ConnectKit context\n // Below: Daimo Pay context\n showPayment,\n paymentState,\n trpc,\n };\n\n return createElement(\n PayContext.Provider,\n { value },\n <Web3ContextProvider>\n <ThemeProvider theme={defaultTheme}>\n {children}\n <DaimoPayModal\n lang={ckLang}\n theme={ckTheme}\n mode={mode}\n customTheme={ckCustomTheme}\n disableMobileInjector={disableMobileInjector}\n />\n </ThemeProvider>\n </Web3ContextProvider>,\n );\n};\n\ntype DaimoPayProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /**\n * Be careful with this endpoint, some endpoints (incl. Alchemy) don't support\n * `signatureSubscribe` which leads to txes behaving erratically\n * (ex. successful txes take minutes to confirm instead of seconds)\n */\n solanaRpcUrl?: string;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl?: string;\n} & useConnectCallbackProps;\n\n/**\n * Provides context for DaimoPayButton and hooks. Place in app root or layout.\n */\nexport const DaimoPayProvider = (props: DaimoPayProviderProps) => {\n const payApiUrl = props.payApiUrl ?? \"https://pay-api.daimo.xyz/\";\n const log = useMemo(\n () =>\n props.debugMode ? (...args: any[]) => console.log(...args) : () => {},\n [props.debugMode],\n );\n\n return (\n <PaymentProvider payApiUrl={payApiUrl} log={log}>\n <SolanaContextProvider solanaRpcUrl={props.solanaRpcUrl}>\n <DaimoPayUIProvider {...props} payApiUrl={payApiUrl} log={log} />\n </SolanaContextProvider>\n </PaymentProvider>\n );\n};\n"],"names":["open","route","modalOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DaimoPayProvider.js","sources":["../../../src/provider/DaimoPayProvider.tsx"],"sourcesContent":["import {\n DaimoPayOrderMode,\n DaimoPayOrderStatusSource,\n debugJson,\n} from \"@daimo/pay-common\";\nimport { Buffer } from \"buffer\";\nimport React, {\n createElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ThemeProvider } from \"styled-components\";\nimport { WagmiContext } from \"wagmi\";\n\nimport { DaimoPayModal } from \"../components/DaimoPayModal\";\nimport { ROUTES } from \"../constants/routes\";\nimport { REQUIRED_CHAINS } from \"../defaultConfig\";\nimport { useChains } from \"../hooks/useChains\";\nimport {\n useConnectCallback,\n useConnectCallbackProps,\n} from \"../hooks/useConnectCallback\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePaymentState } from \"../hooks/usePaymentState\";\nimport { PaymentContext, PaymentProvider } from \"../provider/PaymentProvider\";\nimport defaultTheme from \"../styles/defaultTheme\";\nimport {\n CustomTheme,\n DaimoPayContextOptions,\n DaimoPayModalOptions,\n Languages,\n Mode,\n Theme,\n} from \"../types\";\nimport { createTrpcClient } from \"../utils/trpc\";\nimport { setInWalletPaymentUrlFromApiUrl } from \"../wallets/walletConfigs\";\nimport { PayContext, PayContextValue } from \"./PayContext\";\nimport {\n SolanaContextProvider,\n SolanaWalletName,\n} from \"./SolanaContextProvider\";\nimport { Web3ContextProvider } from \"./Web3ContextProvider\";\n\ntype DaimoPayUIProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl: string;\n log: (msg: string, ...props: any[]) => void;\n} & useConnectCallbackProps;\n\nconst DaimoPayUIProvider = ({\n children,\n theme = \"auto\",\n mode = \"auto\",\n customTheme,\n options,\n onConnect,\n onDisconnect,\n debugMode = false,\n payApiUrl,\n log,\n}: DaimoPayUIProviderProps) => {\n if (!React.useContext(PaymentContext)) {\n throw Error(\"DaimoPayProvider must be within a PaymentProvider\");\n }\n\n if (!React.useContext(WagmiContext)) {\n throw Error(\"DaimoPayProvider must be within a WagmiProvider\");\n }\n\n // Only allow for mounting DaimoPayProvider once, so we avoid weird global\n // state collisions.\n if (React.useContext(PayContext)) {\n throw new Error(\n \"Multiple, nested usages of DaimoPayProvider detected. Please use only one.\",\n );\n }\n\n useConnectCallback({\n onConnect,\n onDisconnect,\n });\n\n const chains = useChains();\n\n for (const requiredChain of REQUIRED_CHAINS) {\n if (!chains.some((c) => c.id === requiredChain.id)) {\n throw new Error(\n `Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(\", \")}. Use \\`getDefaultConfig\\` to automatically configure required chains.`,\n );\n }\n }\n\n // Default config options\n const defaultOptions: DaimoPayContextOptions = {\n language: \"en-US\",\n hideBalance: false,\n hideTooltips: false,\n hideQuestionMarkCTA: false,\n hideRecentBadge: false,\n avoidLayoutShift: true,\n embedGoogleFonts: false,\n truncateLongENSAddress: true,\n reducedMotion: false,\n disclaimer: null,\n bufferPolyfill: true,\n customAvatar: undefined,\n initialChainId: undefined,\n enforceSupportedChains: false,\n ethereumOnboardingUrl: undefined,\n walletOnboardingUrl: undefined,\n overlayBlur: undefined,\n disableMobileInjector: false,\n };\n\n const opts: DaimoPayContextOptions = Object.assign(\n {},\n defaultOptions,\n options,\n );\n\n if (typeof window !== \"undefined\") {\n // Buffer Polyfill, needed for bundlers that don't provide Node polyfills (e.g CRA, Vite, etc.)\n if (opts.bufferPolyfill) window.Buffer = window.Buffer ?? Buffer;\n\n // Some bundlers may need `global` and `process.env` polyfills as well\n // Not implemented here to avoid unexpected behaviors, but leaving example here for future reference\n /*\n * window.global = window.global ?? window;\n * window.process = window.process ?? { env: {} };\n */\n }\n\n const pay = useDaimoPay();\n\n const [ckTheme, setTheme] = useState<Theme>(theme);\n const [ckMode, setMode] = useState<Mode>(mode);\n const [ckCustomTheme, setCustomTheme] = useState<CustomTheme | undefined>(\n customTheme ?? {},\n );\n const [ckLang, setLang] = useState<Languages>(\"en-US\");\n const [disableMobileInjector, setDisableMobileInjector] = useState<boolean>(\n opts.disableMobileInjector ?? false,\n );\n\n const onOpenRef = useRef<(() => void) | undefined>();\n const onCloseRef = useRef<(() => void) | undefined>();\n const setOnOpen = useCallback((fn?: () => void) => {\n onOpenRef.current = fn;\n }, []);\n const setOnClose = useCallback((fn?: () => void) => {\n onCloseRef.current = fn;\n }, []);\n const [open, setOpenState] = useState<boolean>(false);\n const [lockPayParams, setLockPayParams] = useState<boolean>(false);\n const [paymentCompleted, setPaymentCompleted] = useState<boolean>(false);\n const [route, setRouteState] = useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [modalOptions, setModalOptions] = useState<DaimoPayModalOptions>();\n\n // Daimo Pay context\n const [uniquePaymentMethodPage, setUniquePaymentMethodPage] =\n useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [pendingConnectorId, setPendingConnectorId] = useState<\n string | undefined\n >(undefined);\n // Track sessions. Each generates separate intent IDs unless using externalId.\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const [solanaConnector, setSolanaConnector] = useState<\n SolanaWalletName | undefined\n >();\n\n // Other configuration\n const [errorMessage, setErrorMessage] = useState<\n string | React.ReactNode | null\n >(\"\");\n const [showContactSupport, setShowContactSupport] = useState<boolean>(true);\n const [confirmationMessage, setConfirmationMessage] = useState<\n string | undefined\n >(undefined);\n const [redirectReturnUrl, setRedirectReturnUrl] = useState<\n string | undefined\n >(undefined);\n // Connect to the Daimo Pay TRPC API\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n const [resize, onResize] = useState<number>(0);\n\n useEffect(() => {\n setInWalletPaymentUrlFromApiUrl(payApiUrl);\n }, [payApiUrl]);\n\n const setOpen = useCallback(\n (open: boolean, meta?: Record<string, any>) => {\n setOpenState(open);\n\n // Lock pay params starting from the first time the modal is opened to\n // prevent the daimo pay order from changing from under the user\n if (open) {\n setLockPayParams(true);\n }\n // Reset payment state on close if resetOnSuccess is true\n if (!open && paymentCompleted && modalOptions?.resetOnSuccess) {\n setPaymentCompleted(false);\n setLockPayParams(false);\n paymentState.resetOrder();\n }\n\n // Log the open/close event\n trpc.nav.mutate({\n action: open ? \"navOpenPay\" : \"navClosePay\",\n orderId: pay.order?.id?.toString(),\n data: meta ?? {},\n });\n\n // Run the onOpen and onClose callbacks\n if (open) onOpenRef.current?.();\n else onCloseRef.current?.();\n },\n // We don't have good caching on paymentState, so don't include it as a dep\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [trpc, pay.order?.id, modalOptions?.resetOnSuccess, paymentCompleted],\n );\n\n // Callback when a payment is successfully completed (regardless of whether\n // the final call succeeded or bounced)\n const onSuccess = useCallback(() => {\n if (modalOptions?.closeOnSuccess) {\n setTimeout(() => setOpen(false, { event: \"wait-success\" }), 1000);\n }\n setPaymentCompleted(true);\n }, [modalOptions?.closeOnSuccess, setOpen, setPaymentCompleted]);\n\n const setRoute = useCallback(\n (route: ROUTES, data?: Record<string, any>) => {\n const action = route.replace(\"daimoPay\", \"\");\n log(`[SET ROUTE] ${action} ${pay.order?.id} ${debugJson(data ?? {})}`);\n trpc.nav.mutate({\n action,\n orderId: pay.order?.id?.toString(),\n data: data ?? {},\n });\n setRouteState(route);\n },\n [trpc, pay.order?.id, log],\n );\n\n // Other Configuration\n useEffect(() => setTheme(theme), [theme]);\n useEffect(() => setLang(opts.language || \"en-US\"), [opts.language]);\n useEffect(\n () => setDisableMobileInjector(opts.disableMobileInjector ?? false),\n [opts.disableMobileInjector],\n );\n useEffect(() => setErrorMessage(null), [route, open]);\n\n // TODO: replace with dispatcher pattern; remove hook slop\n const paymentState = usePaymentState({\n trpc,\n lockPayParams,\n setRoute,\n log,\n redirectReturnUrl,\n });\n\n const showPayment = async (modalOptions: DaimoPayModalOptions) => {\n const id = pay.order?.id;\n log(\n `[PAY] showing modal ${debugJson({ id, modalOptions, paymentFsmState: pay.paymentState })}`,\n );\n\n setModalOptions(modalOptions);\n setOpen(true);\n if (modalOptions.connectedWalletOnly) {\n paymentState.setTokenMode(\"all\");\n }\n\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION);\n } else if (modalOptions.connectedWalletOnly) {\n setRoute(ROUTES.SELECT_TOKEN);\n } else {\n setRoute(ROUTES.SELECT_METHOD);\n }\n };\n\n // Watch when the order gets paid and navigate to confirmation\n // ...if underpaid, go to the deposit addr screen, let the user finish paying.\n const isUnderpaid =\n pay.order?.mode === DaimoPayOrderMode.HYDRATED &&\n pay.order.sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT &&\n pay.order.sourceTokenAmount != null;\n useEffect(() => {\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION, { event: \"payment-started\" });\n } else if (isUnderpaid) {\n paymentState.setSelectedDepositAddressOption(undefined);\n setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.paymentState, setRoute, isUnderpaid]);\n\n const value: PayContextValue = {\n theme: ckTheme,\n setTheme,\n mode: ckMode,\n setMode,\n customTheme,\n setCustomTheme,\n lang: ckLang,\n setLang,\n disableMobileInjector,\n setDisableMobileInjector,\n setOnOpen,\n setOnClose,\n open,\n setOpen,\n route,\n setRoute,\n // Daimo Pay context\n uniquePaymentMethodPage,\n setUniquePaymentMethodPage,\n pendingConnectorId,\n setPendingConnectorId,\n sessionId,\n solanaConnector,\n setSolanaConnector,\n onConnect,\n // Other configuration\n options: opts,\n errorMessage,\n onSuccess,\n showContactSupport,\n setShowContactSupport,\n confirmationMessage,\n setConfirmationMessage,\n redirectReturnUrl,\n setRedirectReturnUrl,\n debugMode,\n log,\n displayError: (message: string | React.ReactNode | null, code?: any) => {\n setErrorMessage(message);\n console.log(\"---------DAIMOPAY DEBUG---------\");\n console.log(message);\n if (code) console.table(code);\n console.log(\"---------/DAIMOPAY DEBUG---------\");\n },\n resize,\n triggerResize: () => onResize((prev) => prev + 1),\n\n // Above: generic ConnectKit context\n // Below: Daimo Pay context\n showPayment,\n paymentState,\n trpc,\n };\n\n return createElement(\n PayContext.Provider,\n { value },\n <Web3ContextProvider>\n <ThemeProvider theme={defaultTheme}>\n {children}\n <DaimoPayModal\n lang={ckLang}\n theme={ckTheme}\n mode={mode}\n customTheme={ckCustomTheme}\n disableMobileInjector={disableMobileInjector}\n />\n </ThemeProvider>\n </Web3ContextProvider>,\n );\n};\n\ntype DaimoPayProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /**\n * Be careful with this endpoint, some endpoints (incl. Alchemy) don't support\n * `signatureSubscribe` which leads to txes behaving erratically\n * (ex. successful txes take minutes to confirm instead of seconds)\n */\n solanaRpcUrl?: string;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl?: string;\n} & useConnectCallbackProps;\n\n/**\n * Provides context for DaimoPayButton and hooks. Place in app root or layout.\n */\nexport const DaimoPayProvider = (props: DaimoPayProviderProps) => {\n const payApiUrl = props.payApiUrl ?? \"https://pay-api.daimo.xyz/\";\n const log = useMemo(\n () =>\n props.debugMode ? (...args: any[]) => console.log(...args) : () => {},\n [props.debugMode],\n );\n\n return (\n <PaymentProvider\n payApiUrl={payApiUrl}\n log={log}\n debugMode={props.debugMode}\n >\n <SolanaContextProvider solanaRpcUrl={props.solanaRpcUrl}>\n <DaimoPayUIProvider {...props} payApiUrl={payApiUrl} log={log} />\n </SolanaContextProvider>\n </PaymentProvider>\n );\n};\n"],"names":["open","route","modalOptions"],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ const PaymentContext = createContext(null);
|
|
|
8
8
|
function PaymentProvider({
|
|
9
9
|
children,
|
|
10
10
|
payApiUrl,
|
|
11
|
-
log = console.log
|
|
11
|
+
log = console.log,
|
|
12
|
+
debugMode = false
|
|
12
13
|
}) {
|
|
13
14
|
const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
|
|
14
15
|
const trpc = useMemo(() => {
|
|
@@ -18,10 +19,15 @@ function PaymentProvider({
|
|
|
18
19
|
return createPaymentStore();
|
|
19
20
|
}, []);
|
|
20
21
|
useLayoutEffect(() => {
|
|
21
|
-
const unsubscribe = attachPaymentEffectHandlers(
|
|
22
|
+
const unsubscribe = attachPaymentEffectHandlers(
|
|
23
|
+
store,
|
|
24
|
+
trpc,
|
|
25
|
+
log,
|
|
26
|
+
debugMode
|
|
27
|
+
);
|
|
22
28
|
log("[EFFECT] subscribed to payment effects");
|
|
23
29
|
return unsubscribe;
|
|
24
|
-
}, [store, trpc, log]);
|
|
30
|
+
}, [store, trpc, log, debugMode]);
|
|
25
31
|
return /* @__PURE__ */ jsx(PaymentContext.Provider, { value: store, children });
|
|
26
32
|
}
|
|
27
33
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentProvider.js","sources":["../../../src/provider/PaymentProvider.tsx"],"sourcesContent":["import { createContext, useLayoutEffect, useMemo, useState } from \"react\";\nimport { attachPaymentEffectHandlers } from \"../payment/paymentEffects\";\nimport { createPaymentStore, PaymentStore } from \"../payment/paymentStore\";\nimport { createTrpcClient } from \"../utils/trpc\";\n\nexport const PaymentContext = createContext<PaymentStore | null>(null);\n\ntype PaymentProviderProps = {\n children: React.ReactNode;\n payApiUrl: string;\n log?: (msg: string) => void;\n};\n\nexport function PaymentProvider({\n children,\n payApiUrl,\n log = console.log,\n}: PaymentProviderProps) {\n // Generate unique sessionId for tracking in the backend\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n\n const store = useMemo(() => {\n return createPaymentStore();\n }, []);\n\n // Attach subscriber to run side effects in response to events. Use a\n // layout effect that runs before the first render.\n useLayoutEffect(() => {\n const unsubscribe = attachPaymentEffectHandlers(store
|
|
1
|
+
{"version":3,"file":"PaymentProvider.js","sources":["../../../src/provider/PaymentProvider.tsx"],"sourcesContent":["import { createContext, useLayoutEffect, useMemo, useState } from \"react\";\nimport { attachPaymentEffectHandlers } from \"../payment/paymentEffects\";\nimport { createPaymentStore, PaymentStore } from \"../payment/paymentStore\";\nimport { createTrpcClient } from \"../utils/trpc\";\n\nexport const PaymentContext = createContext<PaymentStore | null>(null);\n\ntype PaymentProviderProps = {\n children: React.ReactNode;\n payApiUrl: string;\n log?: (msg: string) => void;\n debugMode?: boolean;\n};\n\nexport function PaymentProvider({\n children,\n payApiUrl,\n log = console.log,\n debugMode = false,\n}: PaymentProviderProps) {\n // Generate unique sessionId for tracking in the backend\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n\n const store = useMemo(() => {\n return createPaymentStore();\n }, []);\n\n // Attach subscriber to run side effects in response to events. Use a\n // layout effect that runs before the first render.\n useLayoutEffect(() => {\n const unsubscribe = attachPaymentEffectHandlers(\n store,\n trpc,\n log,\n debugMode,\n );\n log(\"[EFFECT] subscribed to payment effects\");\n return unsubscribe;\n }, [store, trpc, log, debugMode]);\n\n return (\n <PaymentContext.Provider value={store}>{children}</PaymentContext.Provider>\n );\n}\n"],"names":[],"mappings":";;;;;;AAKa,MAAA,cAAA,GAAiB,cAAmC,IAAI,EAAA;AAS9D,SAAS,eAAgB,CAAA;AAAA,EAC9B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAAA,EACd,SAAY,GAAA,KAAA;AACd,CAAyB,EAAA;AAEvB,EAAM,MAAA,CAAC,SAAS,CAAA,GAAI,QAAS,CAAA,MAAM,MAAO,CAAA,UAAA,EAAa,CAAA,UAAA,CAAW,GAAK,EAAA,EAAE,CAAC,CAAA,CAAA;AAC1E,EAAM,MAAA,IAAA,GAAO,QAAQ,MAAM;AACzB,IAAO,OAAA,gBAAA,CAAiB,WAAW,SAAS,CAAA,CAAA;AAAA,GAC3C,EAAA,CAAC,SAAW,EAAA,SAAS,CAAC,CAAA,CAAA;AAEzB,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,OAAO,kBAAmB,EAAA,CAAA;AAAA,GAC5B,EAAG,EAAE,CAAA,CAAA;AAIL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,WAAc,GAAA,2BAAA;AAAA,MAClB,KAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA;AAAA,KACF,CAAA;AACA,IAAA,GAAA,CAAI,wCAAwC,CAAA,CAAA;AAC5C,IAAO,OAAA,WAAA,CAAA;AAAA,KACN,CAAC,KAAA,EAAO,IAAM,EAAA,GAAA,EAAK,SAAS,CAAC,CAAA,CAAA;AAEhC,EAAA,2BACG,cAAe,CAAA,QAAA,EAAf,EAAwB,KAAA,EAAO,OAAQ,QAAS,EAAA,CAAA,CAAA;AAErD;;;;"}
|