@daimo/pay 1.19.5 → 1.19.7
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/pay/packages/connectkit/package.json.js +123 -0
- package/build/pay/packages/connectkit/package.json.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/MobileWithLogos.js +329 -0
- package/build/pay/packages/connectkit/src/assets/MobileWithLogos.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/ScanIconWithLogos.js +243 -0
- package/build/pay/packages/connectkit/src/assets/ScanIconWithLogos.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/browsers.js +969 -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 +273 -0
- package/build/pay/packages/connectkit/src/assets/icons.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/logos.js +1722 -0
- package/build/pay/packages/connectkit/src/assets/logos.js.map +1 -0
- package/build/pay/packages/connectkit/src/assets/wave.js +46 -0
- package/build/pay/packages/connectkit/src/assets/wave.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Alert/index.js +13 -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 +55 -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 +71 -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 +159 -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 +78 -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 +54 -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 +29 -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 +20 -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 +144 -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 +287 -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 +141 -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 +90 -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 +250 -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 +226 -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 +92 -0
- package/build/pay/packages/connectkit/src/components/Common/CircleTimer.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/ConnectorList/index.js +121 -0
- 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 +344 -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 +78 -0
- package/build/pay/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/QRCode.js +132 -0
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/index.js +89 -0
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/styles.js +142 -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 +34 -0
- package/build/pay/packages/connectkit/src/components/Common/FitText/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/Modal/index.js +547 -0
- 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 +665 -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 +145 -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 +138 -0
- package/build/pay/packages/connectkit/src/components/Common/OptionsList/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/OrderHeader/index.js +148 -0
- 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 +70 -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 +30 -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 +120 -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 +169 -0
- package/build/pay/packages/connectkit/src/components/Common/ScrollArea/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Common/SelectAnotherMethodButton/index.js +96 -0
- 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 +64 -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 +22 -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 +43 -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 +46 -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 +152 -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 +62 -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 +129 -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 +81 -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 +31 -0
- package/build/pay/packages/connectkit/src/components/Common/WalletChainLogo/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayButton/index.js +196 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayButton/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayButton/styles.js +50 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayButton/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.js +70 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js +339 -0
- 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 +131 -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/pay/packages/connectkit/src/components/DaimoPayModal/index.js +605 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayModal/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +25 -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 +853 -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 +222 -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 +140 -0
- package/build/pay/packages/connectkit/src/components/Pages/About/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Confirmation/index.js +126 -0
- package/build/pay/packages/connectkit/src/components/Pages/Confirmation/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/Connectors/index.js +26 -0
- 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 +57 -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 +64 -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 +34 -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 +229 -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 +157 -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 +24 -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 +79 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.js +80 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectExchange/index.js +62 -0
- 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 +80 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectMethod/index.js +315 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectMethod/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectToken/index.js +99 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectToken/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/SelectWalletAmount/index.js +71 -0
- 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 +55 -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 +41 -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 +94 -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 +92 -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 +24 -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 +45 -0
- package/build/pay/packages/connectkit/src/components/Pages/SwitchNetworks/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.js +586 -0
- package/build/pay/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/components/Pages/WaitingExternal/index.js +174 -0
- 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 +49 -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 +104 -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 +117 -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 +29 -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 +68 -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 +66 -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 +24 -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 +40 -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 +37 -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 +32 -0
- package/build/pay/packages/connectkit/src/components/Spinners/styles.js.map +1 -0
- package/build/pay/packages/connectkit/src/constants/defaultTheme.js +6 -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/pay/packages/connectkit/src/constants/routes.js +31 -0
- 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/pay/packages/connectkit/src/defaultConfig.js +64 -0
- package/build/pay/packages/connectkit/src/defaultConfig.js.map +1 -0
- package/build/pay/packages/connectkit/src/defaultConnectors.js +37 -0
- package/build/pay/packages/connectkit/src/defaultConnectors.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useChainIsSupported.js +10 -0
- package/build/pay/packages/connectkit/src/hooks/useChainIsSupported.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useChains.js +10 -0
- package/build/pay/packages/connectkit/src/hooks/useChains.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useConnect.js +61 -0
- package/build/pay/packages/connectkit/src/hooks/useConnect.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useConnectCallback.js +21 -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/pay/packages/connectkit/src/hooks/useDaimoPay.js +131 -0
- package/build/pay/packages/connectkit/src/hooks/useDaimoPay.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useDaimoPayStatus.js +12 -0
- package/build/pay/packages/connectkit/src/hooks/useDaimoPayStatus.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useDaimoPayUI.js +15 -0
- package/build/pay/packages/connectkit/src/hooks/useDaimoPayUI.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useDepositAddressOptions.js +35 -0
- package/build/pay/packages/connectkit/src/hooks/useDepositAddressOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useEnsFallbackConfig.js +16 -0
- package/build/pay/packages/connectkit/src/hooks/useEnsFallbackConfig.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useExternalPaymentOptions.js +79 -0
- package/build/pay/packages/connectkit/src/hooks/useExternalPaymentOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useFitText.js +133 -0
- package/build/pay/packages/connectkit/src/hooks/useFitText.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useFocusTrap.js +53 -0
- package/build/pay/packages/connectkit/src/hooks/useFocusTrap.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useIsMobile.js +11 -0
- package/build/pay/packages/connectkit/src/hooks/useIsMobile.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useIsMounted.js +10 -0
- package/build/pay/packages/connectkit/src/hooks/useIsMounted.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useLastConnector.js +24 -0
- package/build/pay/packages/connectkit/src/hooks/useLastConnector.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useLocales.js +60 -0
- package/build/pay/packages/connectkit/src/hooks/useLocales.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useLockBodyScroll.js +47 -0
- package/build/pay/packages/connectkit/src/hooks/useLockBodyScroll.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useOrderUsdLimits.js +24 -0
- package/build/pay/packages/connectkit/src/hooks/useOrderUsdLimits.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/usePayContext.js +11 -0
- package/build/pay/packages/connectkit/src/hooks/usePayContext.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/usePaymentState.js +410 -0
- package/build/pay/packages/connectkit/src/hooks/usePaymentState.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/usePrevious.js +13 -0
- package/build/pay/packages/connectkit/src/hooks/usePrevious.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useSolanaPaymentOptions.js +38 -0
- package/build/pay/packages/connectkit/src/hooks/useSolanaPaymentOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useTokenOptions.js +152 -0
- package/build/pay/packages/connectkit/src/hooks/useTokenOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useUntronAvailability.js +32 -0
- package/build/pay/packages/connectkit/src/hooks/useUntronAvailability.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useWalletPaymentOptions.js +97 -0
- package/build/pay/packages/connectkit/src/hooks/useWalletPaymentOptions.js.map +1 -0
- package/build/pay/packages/connectkit/src/hooks/useWindowSize.js +23 -0
- package/build/pay/packages/connectkit/src/hooks/useWindowSize.js.map +1 -0
- package/build/pay/packages/connectkit/src/index.js +14 -0
- package/build/pay/packages/connectkit/src/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/index.js +48 -0
- package/build/pay/packages/connectkit/src/localizations/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ar-AE.js +95 -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 +93 -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 +101 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ee-EE.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/en-US.js +145 -0
- package/build/pay/packages/connectkit/src/localizations/locales/en-US.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/es-ES.js +138 -0
- 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 +93 -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 +93 -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 +93 -0
- package/build/pay/packages/connectkit/src/localizations/locales/ja-JP.js.map +1 -0
- package/build/pay/packages/connectkit/src/localizations/locales/pt-BR.js +145 -0
- 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 +97 -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 +101 -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 +101 -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 +93 -0
- package/build/pay/packages/connectkit/src/localizations/locales/zh-CN.js.map +1 -0
- package/build/pay/packages/connectkit/src/payment/paymentEffects.js +268 -0
- package/build/pay/packages/connectkit/src/payment/paymentEffects.js.map +1 -0
- package/build/pay/packages/connectkit/src/payment/paymentFsm.js +234 -0
- package/build/pay/packages/connectkit/src/payment/paymentFsm.js.map +1 -0
- package/build/pay/packages/connectkit/src/payment/paymentStore.js +18 -0
- package/build/pay/packages/connectkit/src/payment/paymentStore.js.map +1 -0
- package/build/pay/packages/connectkit/src/payment/paymentUtils.js +10 -0
- package/build/pay/packages/connectkit/src/payment/paymentUtils.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/DaimoPayProvider.js +292 -0
- package/build/pay/packages/connectkit/src/provider/DaimoPayProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/PayContext.js +6 -0
- package/build/pay/packages/connectkit/src/provider/PayContext.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/PaymentProvider.js +29 -0
- package/build/pay/packages/connectkit/src/provider/PaymentProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/SolanaContextProvider.js +14 -0
- package/build/pay/packages/connectkit/src/provider/SolanaContextProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/provider/Web3ContextProvider.js +36 -0
- package/build/pay/packages/connectkit/src/provider/Web3ContextProvider.js.map +1 -0
- package/build/pay/packages/connectkit/src/stateStore.js +36 -0
- package/build/pay/packages/connectkit/src/stateStore.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/defaultTheme.js +80 -0
- package/build/pay/packages/connectkit/src/styles/defaultTheme.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/index.js +313 -0
- package/build/pay/packages/connectkit/src/styles/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/styled/index.js +6 -0
- package/build/pay/packages/connectkit/src/styles/styled/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/base.js +141 -0
- package/build/pay/packages/connectkit/src/styles/themes/base.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/index.js +13 -0
- package/build/pay/packages/connectkit/src/styles/themes/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/midnight.js +76 -0
- package/build/pay/packages/connectkit/src/styles/themes/midnight.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/minimal.js +96 -0
- package/build/pay/packages/connectkit/src/styles/themes/minimal.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/nouns.js +81 -0
- package/build/pay/packages/connectkit/src/styles/themes/nouns.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/retro.js +106 -0
- package/build/pay/packages/connectkit/src/styles/themes/retro.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/rounded.js +106 -0
- package/build/pay/packages/connectkit/src/styles/themes/rounded.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/soft.js +71 -0
- package/build/pay/packages/connectkit/src/styles/themes/soft.js.map +1 -0
- package/build/pay/packages/connectkit/src/styles/themes/web95.js +132 -0
- package/build/pay/packages/connectkit/src/styles/themes/web95.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/exports.js +6 -0
- package/build/pay/packages/connectkit/src/utils/exports.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/format.js +45 -0
- package/build/pay/packages/connectkit/src/utils/format.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/index.js +42 -0
- package/build/pay/packages/connectkit/src/utils/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/p3.js +15 -0
- package/build/pay/packages/connectkit/src/utils/p3.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/platform.js +11 -0
- package/build/pay/packages/connectkit/src/utils/platform.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/polling.js +35 -0
- package/build/pay/packages/connectkit/src/utils/polling.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/supportUrl.js +16 -0
- package/build/pay/packages/connectkit/src/utils/supportUrl.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/trpc.js +19 -0
- package/build/pay/packages/connectkit/src/utils/trpc.js.map +1 -0
- package/build/pay/packages/connectkit/src/utils/validateInput.js +16 -0
- package/build/pay/packages/connectkit/src/utils/validateInput.js.map +1 -0
- package/build/pay/packages/connectkit/src/wallets/index.js +21 -0
- package/build/pay/packages/connectkit/src/wallets/index.js.map +1 -0
- package/build/pay/packages/connectkit/src/wallets/useWallets.js +278 -0
- package/build/pay/packages/connectkit/src/wallets/useWallets.js.map +1 -0
- package/build/pay/packages/connectkit/src/wallets/walletConfigs.js +281 -0
- package/build/pay/packages/connectkit/src/wallets/walletConfigs.js.map +1 -0
- package/build/pay/packages/connectkit/src/world-mini-app/WorldPayButton.js +165 -0
- 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 +59 -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/pay/packages/connectkit/src/world.js.map +1 -0
- 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/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/build/src/utils/wallets.js +9 -0
- package/build/src/utils/wallets.js.map +1 -0
- package/build/src/wallets/useWallets.js +1 -1
- package/build/src/wallets/useWallets.js.map +1 -1
- package/build/src/wallets/walletConfigs.js +8 -84
- package/build/src/wallets/walletConfigs.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { getOrderSourceChainId, DaimoPayEventType, writeDaimoPayOrderID, getDaimoPayOrderView, getOrderDestChainId, assertNotNull } from '@daimo/pay-common';
|
|
3
|
+
import { useState, useEffect, useRef, useCallback } from 'react';
|
|
4
|
+
import ThemedButton from '../components/Common/ThemedButton/index.js';
|
|
5
|
+
import { DaimoPayButtonInner } from '../components/DaimoPayButton/index.js';
|
|
6
|
+
import { ROUTES } from '../constants/routes.js';
|
|
7
|
+
import { useDaimoPay } from '../hooks/useDaimoPay.js';
|
|
8
|
+
import { usePayContext } from '../hooks/usePayContext.js';
|
|
9
|
+
import { ResetContainer } from '../styles/index.js';
|
|
10
|
+
import { promptWorldcoinPayment } from './promptWorldPayment.js';
|
|
11
|
+
import { MiniKit } from '@worldcoin/minikit-js';
|
|
12
|
+
import useIsMobile from '../hooks/useIsMobile.js';
|
|
13
|
+
import { ThemeContainer } from '../components/Common/ThemedButton/styles.js';
|
|
14
|
+
|
|
15
|
+
function WorldPayButton(props) {
|
|
16
|
+
const { theme, mode, customTheme } = props;
|
|
17
|
+
const context = usePayContext();
|
|
18
|
+
return /* @__PURE__ */ jsx(WorldPayButtonCustom, { ...props, children: ({ show, isMiniKitReady }) => /* @__PURE__ */ jsx(
|
|
19
|
+
ResetContainer,
|
|
20
|
+
{
|
|
21
|
+
$useTheme: theme ?? context.theme,
|
|
22
|
+
$useMode: mode ?? context.mode,
|
|
23
|
+
$customTheme: customTheme ?? context.customTheme,
|
|
24
|
+
children: /* @__PURE__ */ jsx(
|
|
25
|
+
ThemeContainer,
|
|
26
|
+
{
|
|
27
|
+
onClick: props.disabled || !isMiniKitReady ? void 0 : show,
|
|
28
|
+
children: /* @__PURE__ */ jsx(ThemedButton, { children: /* @__PURE__ */ jsx(DaimoPayButtonInner, {}) })
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
) });
|
|
33
|
+
}
|
|
34
|
+
function WorldPayButtonCustom(props) {
|
|
35
|
+
const pay = useDaimoPay();
|
|
36
|
+
const context = usePayContext();
|
|
37
|
+
const { paymentState, log } = context;
|
|
38
|
+
const [isMiniKitReady, setIsMiniKitReady] = useState(false);
|
|
39
|
+
const { isIOS } = useIsMobile();
|
|
40
|
+
const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
log("[WORLD] Installing MiniKit");
|
|
43
|
+
const result = MiniKit.install();
|
|
44
|
+
log("[WORLD] MiniKit install result", result);
|
|
45
|
+
log("[WORLD] MiniKit is installed", MiniKit.isInstalled());
|
|
46
|
+
setIsMiniKitReady(MiniKit.isInstalled());
|
|
47
|
+
}, []);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if ("payId" in props) {
|
|
50
|
+
log("[WORLD] Using payId from props: ", props.payId);
|
|
51
|
+
paymentState.setPayId(props.payId);
|
|
52
|
+
} else {
|
|
53
|
+
log("[WORLD] Creating preview order");
|
|
54
|
+
paymentState.setPayParams(props);
|
|
55
|
+
}
|
|
56
|
+
}, [JSON.stringify(props || {})]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
context.setShowContactSupport(!isIOS);
|
|
59
|
+
}, [isIOS]);
|
|
60
|
+
const hasAutoOpened = useRef(false);
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (!props.defaultOpen || hasAutoOpened.current) return;
|
|
63
|
+
if (pay.order == null) return;
|
|
64
|
+
show();
|
|
65
|
+
hasAutoOpened.current = true;
|
|
66
|
+
}, [pay.order, props.defaultOpen, hasAutoOpened.current]);
|
|
67
|
+
const sentStart = useRef(false);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
if (sentStart.current) return;
|
|
70
|
+
if (pay.paymentState !== "payment_started") return;
|
|
71
|
+
const sourceChainId = getOrderSourceChainId(pay.order);
|
|
72
|
+
if (sourceChainId == null) return;
|
|
73
|
+
sentStart.current = true;
|
|
74
|
+
onPaymentStarted?.({
|
|
75
|
+
type: DaimoPayEventType.PaymentStarted,
|
|
76
|
+
paymentId: writeDaimoPayOrderID(pay.order.id),
|
|
77
|
+
chainId: sourceChainId,
|
|
78
|
+
txHash: pay.order.sourceInitiateTxHash,
|
|
79
|
+
payment: getDaimoPayOrderView(pay.order)
|
|
80
|
+
});
|
|
81
|
+
}, [pay.order, pay.paymentState]);
|
|
82
|
+
const sentComplete = useRef(false);
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
if (sentComplete.current) return;
|
|
85
|
+
if (pay.paymentState !== "payment_completed" && pay.paymentState !== "payment_bounced")
|
|
86
|
+
return;
|
|
87
|
+
sentComplete.current = true;
|
|
88
|
+
const eventType = pay.paymentState === "payment_completed" ? DaimoPayEventType.PaymentCompleted : DaimoPayEventType.PaymentBounced;
|
|
89
|
+
const event = {
|
|
90
|
+
type: eventType,
|
|
91
|
+
paymentId: writeDaimoPayOrderID(pay.order.id),
|
|
92
|
+
chainId: getOrderDestChainId(pay.order),
|
|
93
|
+
txHash: assertNotNull(
|
|
94
|
+
pay.order.destFastFinishTxHash ?? pay.order.destClaimTxHash,
|
|
95
|
+
`[WORLD PAY BUTTON] dest tx hash null on order ${pay.order.id} when intent status is ${pay.order.intentStatus}`
|
|
96
|
+
),
|
|
97
|
+
payment: getDaimoPayOrderView(pay.order)
|
|
98
|
+
};
|
|
99
|
+
if (pay.paymentState === "payment_completed") {
|
|
100
|
+
onPaymentCompleted?.(event);
|
|
101
|
+
} else if (pay.paymentState === "payment_bounced") {
|
|
102
|
+
onPaymentBounced?.(event);
|
|
103
|
+
}
|
|
104
|
+
}, [pay.order, pay.paymentState]);
|
|
105
|
+
const showSpinner = useCallback(() => {
|
|
106
|
+
log(`[WORLD] showing spinner ${pay.order?.id}`);
|
|
107
|
+
const modalOptions = {
|
|
108
|
+
closeOnSuccess: props.closeOnSuccess,
|
|
109
|
+
resetOnSuccess: props.resetOnSuccess
|
|
110
|
+
};
|
|
111
|
+
context.showPayment(modalOptions);
|
|
112
|
+
context.setRoute(ROUTES.CONFIRMATION);
|
|
113
|
+
}, [pay.order?.id, log, props.closeOnSuccess, props.resetOnSuccess]);
|
|
114
|
+
const show = useCallback(async () => {
|
|
115
|
+
log(`[WORLD] showing payment ${pay.order?.id}`);
|
|
116
|
+
if (!isMiniKitReady) {
|
|
117
|
+
console.error(
|
|
118
|
+
"[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature."
|
|
119
|
+
);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (pay.paymentState === "error") {
|
|
123
|
+
log("[WORLD] showing payment error page");
|
|
124
|
+
const modalOptions = {
|
|
125
|
+
closeOnSuccess: props.closeOnSuccess,
|
|
126
|
+
resetOnSuccess: props.resetOnSuccess
|
|
127
|
+
};
|
|
128
|
+
context.showPayment(modalOptions);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (["payment_started", "payment_completed", "payment_bounced"].includes(
|
|
132
|
+
pay.paymentState
|
|
133
|
+
)) {
|
|
134
|
+
showSpinner();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
log(`[WORLD] hydrating order ${pay.order?.id}`);
|
|
138
|
+
const { order } = await pay.hydrateOrder();
|
|
139
|
+
log(
|
|
140
|
+
`[WORLD] hydrated order ${pay.order?.id}. Prompting payment with MiniKit`
|
|
141
|
+
);
|
|
142
|
+
const payRes = await promptWorldcoinPayment(order, context.trpc);
|
|
143
|
+
if (payRes == null || payRes.finalPayload.status == "error") {
|
|
144
|
+
log("[WORLD] Failed to prompt Worldcoin payment: ", payRes);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
log(`[WORLD] triggering payment search on ${pay.order?.id}`);
|
|
148
|
+
pay.paySource();
|
|
149
|
+
showSpinner();
|
|
150
|
+
}, [
|
|
151
|
+
pay,
|
|
152
|
+
showSpinner,
|
|
153
|
+
context.trpc,
|
|
154
|
+
isMiniKitReady,
|
|
155
|
+
log,
|
|
156
|
+
props.closeOnSuccess,
|
|
157
|
+
props.resetOnSuccess
|
|
158
|
+
]);
|
|
159
|
+
return props.children({ show, isMiniKitReady });
|
|
160
|
+
}
|
|
161
|
+
WorldPayButtonCustom.displayName = "WorldPayButton.Custom";
|
|
162
|
+
WorldPayButton.Custom = WorldPayButtonCustom;
|
|
163
|
+
|
|
164
|
+
export { WorldPayButton };
|
|
165
|
+
//# sourceMappingURL=WorldPayButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorldPayButton.js","sources":["../../../../../../src/world-mini-app/WorldPayButton.tsx"],"sourcesContent":["import {\n assertNotNull,\n DaimoPayEventType,\n DaimoPayUserMetadata,\n getDaimoPayOrderView,\n getOrderDestChainId,\n getOrderSourceChainId,\n PaymentBouncedEvent,\n PaymentCompletedEvent,\n PaymentStartedEvent,\n writeDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { ReactElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Address, Hex } from \"viem\";\nimport ThemedButton, {\n ThemeContainer,\n} from \"../components/Common/ThemedButton\";\nimport { DaimoPayButtonInner } from \"../components/DaimoPayButton\";\nimport { ROUTES } from \"../constants/routes\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePayContext } from \"../hooks/usePayContext\";\nimport { ResetContainer } from \"../styles\";\nimport { CustomTheme, Mode, Theme } from \"../types\";\nimport { promptWorldcoinPayment } from \"./promptWorldPayment\";\n\nimport { MiniKit } from \"@worldcoin/minikit-js\";\nimport useIsMobile from \"../hooks/useIsMobile\";\n\nexport type WorldPayButtonPaymentProps =\n | {\n /**\n * Your public app ID. Specify either (payId) or (appId + parameters).\n */\n appId: string;\n /**\n * Destination chain ID.\n */\n toChain: number;\n /**\n * The destination token to send, completing payment. Must be an ERC-20\n * token or the zero address, indicating the native token / ETH.\n */\n toToken: Address;\n /**\n * The amount of destination token to send (transfer or approve).\n */\n toUnits: string;\n /**\n * The destination address to transfer to, or contract to call.\n */\n toAddress: Address;\n /**\n * Optional calldata to call an arbitrary function on `toAddress`.\n */\n toCallData?: Hex;\n /**\n * The intent verb, such as \"Pay\", \"Deposit\", or \"Purchase\".\n */\n intent?: string;\n /**\n * External ID. E.g. a correlation ID.\n */\n externalId?: string;\n /**\n * Developer metadata. E.g. correlation ID.\n * */\n metadata?: DaimoPayUserMetadata;\n /**\n * The address to refund to if the payment bounces.\n */\n refundAddress?: Address;\n }\n | {\n /** The payment ID, generated via the Daimo Pay API. Replaces params above. */\n payId: string;\n };\n\ntype WorldPayButtonCommonProps = WorldPayButtonPaymentProps & {\n /** Called when user sends payment and transaction is seen on chain */\n onPaymentStarted?: (event: PaymentStartedEvent) => void;\n /** Called when destination transfer or call completes successfully */\n onPaymentCompleted?: (event: PaymentCompletedEvent) => void;\n /** Called when destination call reverts and funds are refunded */\n onPaymentBounced?: (event: PaymentBouncedEvent) => void;\n /** Open the modal by default. */\n defaultOpen?: boolean;\n /** Automatically close the modal after a successful payment. */\n closeOnSuccess?: boolean;\n /** Reset the payment after a successful payment. */\n resetOnSuccess?: boolean;\n};\n\nexport type WorldPayButtonProps = WorldPayButtonCommonProps & {\n /** Light mode, dark mode, or auto. */\n mode?: Mode;\n /** Named theme. See docs for options. */\n theme?: Theme;\n /** Custom theme. See docs for options. */\n customTheme?: CustomTheme;\n /** Disable interaction. */\n disabled?: boolean;\n};\n\nexport type WorldPayButtonCustomProps = WorldPayButtonCommonProps & {\n children: (renderProps: {\n show: () => void;\n isMiniKitReady: boolean;\n }) => ReactElement;\n};\n\nexport function WorldPayButton(props: WorldPayButtonProps) {\n const { theme, mode, customTheme } = props;\n const context = usePayContext();\n\n return (\n <WorldPayButtonCustom {...props}>\n {({ show, isMiniKitReady }) => (\n <ResetContainer\n $useTheme={theme ?? context.theme}\n $useMode={mode ?? context.mode}\n $customTheme={customTheme ?? context.customTheme}\n >\n <ThemeContainer\n onClick={props.disabled || !isMiniKitReady ? undefined : show}\n >\n <ThemedButton>\n <DaimoPayButtonInner />\n </ThemedButton>\n </ThemeContainer>\n </ResetContainer>\n )}\n </WorldPayButtonCustom>\n );\n}\n\nfunction WorldPayButtonCustom(props: WorldPayButtonCustomProps) {\n const pay = useDaimoPay();\n const context = usePayContext();\n const { paymentState, log } = context;\n const [isMiniKitReady, setIsMiniKitReady] = useState(false);\n const { isIOS } = useIsMobile();\n\n // Payment events: call these three event handlers.\n const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;\n\n // Install Minikit if not already installed\n useEffect(() => {\n log(\"[WORLD] Installing MiniKit\");\n const result = MiniKit.install();\n log(\"[WORLD] MiniKit install result\", result);\n log(\"[WORLD] MiniKit is installed\", MiniKit.isInstalled());\n setIsMiniKitReady(MiniKit.isInstalled());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Set the payParams\n useEffect(() => {\n if (\"payId\" in props) {\n log(\"[WORLD] Using payId from props: \", props.payId);\n paymentState.setPayId(props.payId);\n } else {\n log(\"[WORLD] Creating preview order\");\n paymentState.setPayParams(props);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(props || {})]);\n\n // Set the showContactSupport flag\n useEffect(() => {\n // Links are broken on iOS in World App, so hide the contact support button\n context.setShowContactSupport(!isIOS);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isIOS]);\n\n // Open the modal by default if the defaultOpen prop is true\n const hasAutoOpened = useRef(false);\n useEffect(() => {\n if (!props.defaultOpen || hasAutoOpened.current) return;\n if (pay.order == null) return;\n show();\n hasAutoOpened.current = true;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order, props.defaultOpen, hasAutoOpened.current]);\n\n // Emit onPaymentStart handler when payment state changes to payment_started\n const sentStart = useRef(false);\n useEffect(() => {\n if (sentStart.current) return;\n if (pay.paymentState !== \"payment_started\") return;\n\n // TODO: Populate source payment details immediately when the user pays.\n // Use this hack because source chain id is not immediately populated when\n // payment_started\n const sourceChainId = getOrderSourceChainId(pay.order);\n if (sourceChainId == null) return;\n\n sentStart.current = true;\n onPaymentStarted?.({\n type: DaimoPayEventType.PaymentStarted,\n paymentId: writeDaimoPayOrderID(pay.order.id),\n chainId: sourceChainId,\n txHash: pay.order.sourceInitiateTxHash,\n payment: getDaimoPayOrderView(pay.order),\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order, pay.paymentState]);\n\n // Emit onPaymentComplete or onPaymentBounced handler when payment state\n // changes to payment_completed or payment_bounced\n const sentComplete = useRef(false);\n useEffect(() => {\n if (sentComplete.current) return;\n if (\n pay.paymentState !== \"payment_completed\" &&\n pay.paymentState !== \"payment_bounced\"\n )\n return;\n\n sentComplete.current = true;\n const eventType =\n pay.paymentState === \"payment_completed\"\n ? DaimoPayEventType.PaymentCompleted\n : DaimoPayEventType.PaymentBounced;\n const event = {\n type: eventType,\n paymentId: writeDaimoPayOrderID(pay.order.id),\n chainId: getOrderDestChainId(pay.order),\n txHash: assertNotNull(\n pay.order.destFastFinishTxHash ?? pay.order.destClaimTxHash,\n `[WORLD PAY BUTTON] dest tx hash null on order ${pay.order.id} when intent status is ${pay.order.intentStatus}`,\n ),\n payment: getDaimoPayOrderView(pay.order),\n };\n\n if (pay.paymentState === \"payment_completed\") {\n onPaymentCompleted?.(event as PaymentCompletedEvent);\n } else if (pay.paymentState === \"payment_bounced\") {\n onPaymentBounced?.(event as PaymentBouncedEvent);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order, pay.paymentState]);\n\n // Navigate to the confirmation page in the modal to show the spinner\n const showSpinner = useCallback(() => {\n log(`[WORLD] showing spinner ${pay.order?.id}`);\n const modalOptions = {\n closeOnSuccess: props.closeOnSuccess,\n resetOnSuccess: props.resetOnSuccess,\n };\n context.showPayment(modalOptions);\n context.setRoute(ROUTES.CONFIRMATION);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order?.id, log, props.closeOnSuccess, props.resetOnSuccess]);\n\n // Show the Worldcoin payment drawer and pop open the Daimo Pay modal\n const show = useCallback(async () => {\n log(`[WORLD] showing payment ${pay.order?.id}`);\n if (!isMiniKitReady) {\n console.error(\n \"[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature.\",\n );\n return;\n }\n if (pay.paymentState === \"error\") {\n log(\"[WORLD] showing payment error page\");\n const modalOptions = {\n closeOnSuccess: props.closeOnSuccess,\n resetOnSuccess: props.resetOnSuccess,\n };\n context.showPayment(modalOptions);\n return;\n }\n\n if (\n [\"payment_started\", \"payment_completed\", \"payment_bounced\"].includes(\n pay.paymentState,\n )\n ) {\n showSpinner();\n return;\n }\n\n log(`[WORLD] hydrating order ${pay.order?.id}`);\n const { order } = await pay.hydrateOrder();\n log(\n `[WORLD] hydrated order ${pay.order?.id}. Prompting payment with MiniKit`,\n );\n const payRes = await promptWorldcoinPayment(order, context.trpc);\n if (payRes == null || payRes.finalPayload.status == \"error\") {\n log(\"[WORLD] Failed to prompt Worldcoin payment: \", payRes);\n return;\n }\n\n log(`[WORLD] triggering payment search on ${pay.order?.id}`);\n pay.paySource();\n\n // Optimistically assume the source payment is correct and show the\n // confirmation spinner\n showSpinner();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n pay,\n showSpinner,\n context.trpc,\n isMiniKitReady,\n log,\n props.closeOnSuccess,\n props.resetOnSuccess,\n ]);\n\n return props.children({ show, isMiniKitReady });\n}\n\nWorldPayButtonCustom.displayName = \"WorldPayButton.Custom\";\n\nWorldPayButton.Custom = WorldPayButtonCustom;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { worldchainWLD, worldchainUSDC, assert } from '@daimo/pay-common';
|
|
2
|
+
import { getAddress } from 'viem';
|
|
3
|
+
import { MiniKit, Tokens } from '@worldcoin/minikit-js';
|
|
4
|
+
|
|
5
|
+
async function promptWorldcoinPayment(order, trpc) {
|
|
6
|
+
try {
|
|
7
|
+
if (!MiniKit.isInstalled()) {
|
|
8
|
+
console.error(
|
|
9
|
+
"[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature."
|
|
10
|
+
);
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const paymentOptions = await trpc.getTokenPaymentOptions.query({
|
|
14
|
+
orderId: order.id,
|
|
15
|
+
tokens: [
|
|
16
|
+
{
|
|
17
|
+
chainId: worldchainWLD.chainId,
|
|
18
|
+
token: worldchainWLD.token
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
chainId: worldchainUSDC.chainId,
|
|
22
|
+
token: worldchainUSDC.token
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
});
|
|
26
|
+
const wld = paymentOptions.find(
|
|
27
|
+
(opt) => getAddress(opt.token.token) === getAddress(worldchainWLD.token)
|
|
28
|
+
);
|
|
29
|
+
const usdc = paymentOptions.find(
|
|
30
|
+
(opt) => getAddress(opt.token.token) === getAddress(worldchainUSDC.token)
|
|
31
|
+
);
|
|
32
|
+
assert(wld != null, "WLD DP token not found");
|
|
33
|
+
assert(usdc != null, "USDC DP token not found");
|
|
34
|
+
const paymentId = crypto.randomUUID().replace(/-/g, "");
|
|
35
|
+
const payload = {
|
|
36
|
+
reference: paymentId,
|
|
37
|
+
to: order.intentAddr,
|
|
38
|
+
tokens: [
|
|
39
|
+
{
|
|
40
|
+
symbol: Tokens.WLD,
|
|
41
|
+
token_amount: wld.amount
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
symbol: Tokens.USDC,
|
|
45
|
+
token_amount: usdc.amount
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
description: order.metadata.intent
|
|
49
|
+
};
|
|
50
|
+
const { finalPayload } = await MiniKit.commandsAsync.pay(payload);
|
|
51
|
+
return { paymentId, finalPayload };
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error("[WORLD] Error sending payment", error);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { promptWorldcoinPayment };
|
|
59
|
+
//# sourceMappingURL=promptWorldPayment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptWorldPayment.js","sources":["../../../../../../src/world-mini-app/promptWorldPayment.ts"],"sourcesContent":["import {\n assert,\n DaimoPayHydratedOrderWithOrg,\n DaimoPayTokenAmount,\n worldchainUSDC,\n worldchainWLD,\n} from \"@daimo/pay-common\";\nimport { getAddress } from \"viem\";\n\nimport {\n MiniAppPaymentPayload,\n MiniKit,\n PayCommandInput,\n Tokens,\n} from \"@worldcoin/minikit-js\";\n\n/**\n * Open Worldcoin's payment drawer and prompt the user to pay a Daimo Pay order.\n */\nexport async function promptWorldcoinPayment(\n order: DaimoPayHydratedOrderWithOrg,\n trpc: any,\n): Promise<{ paymentId: string; finalPayload: MiniAppPaymentPayload } | null> {\n try {\n if (!MiniKit.isInstalled()) {\n console.error(\n \"[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature.\",\n );\n return null;\n }\n\n const paymentOptions = (await trpc.getTokenPaymentOptions.query({\n orderId: order.id,\n tokens: [\n {\n chainId: worldchainWLD.chainId,\n token: worldchainWLD.token,\n },\n {\n chainId: worldchainUSDC.chainId,\n token: worldchainUSDC.token,\n },\n ],\n })) as DaimoPayTokenAmount[];\n\n const wld = paymentOptions.find(\n (opt) => getAddress(opt.token.token) === getAddress(worldchainWLD.token),\n );\n const usdc = paymentOptions.find(\n (opt) => getAddress(opt.token.token) === getAddress(worldchainUSDC.token),\n );\n\n assert(wld != null, \"WLD DP token not found\");\n assert(usdc != null, \"USDC DP token not found\");\n\n const paymentId = crypto.randomUUID().replace(/-/g, \"\");\n const payload: PayCommandInput = {\n reference: paymentId,\n to: order.intentAddr,\n tokens: [\n {\n symbol: Tokens.WLD,\n token_amount: wld.amount,\n },\n {\n symbol: Tokens.USDC,\n token_amount: usdc.amount,\n },\n ],\n description: order.metadata.intent,\n };\n const { finalPayload } = await MiniKit.commandsAsync.pay(payload);\n return { paymentId, finalPayload };\n } catch (error: unknown) {\n console.error(\"[WORLD] Error sending payment\", error);\n return null;\n }\n}\n"],"names":[],"mappings":";;;;AAmBsB,eAAA,sBAAA,CACpB,OACA,IAC4E,EAAA;AAC5E,EAAI,IAAA;AACF,IAAI,IAAA,CAAC,OAAQ,CAAA,WAAA,EAAe,EAAA;AAC1B,MAAQ,OAAA,CAAA,KAAA;AAAA,QACN,6FAAA;AAAA,OACF,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,cAAkB,GAAA,MAAM,IAAK,CAAA,sBAAA,CAAuB,KAAM,CAAA;AAAA,MAC9D,SAAS,KAAM,CAAA,EAAA;AAAA,MACf,MAAQ,EAAA;AAAA,QACN;AAAA,UACE,SAAS,aAAc,CAAA,OAAA;AAAA,UACvB,OAAO,aAAc,CAAA,KAAA;AAAA,SACvB;AAAA,QACA;AAAA,UACE,SAAS,cAAe,CAAA,OAAA;AAAA,UACxB,OAAO,cAAe,CAAA,KAAA;AAAA,SACxB;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,MAAM,cAAe,CAAA,IAAA;AAAA,MACzB,CAAC,QAAQ,UAAW,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA,KAAM,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA;AAAA,KACzE,CAAA;AACA,IAAA,MAAM,OAAO,cAAe,CAAA,IAAA;AAAA,MAC1B,CAAC,QAAQ,UAAW,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA,KAAM,UAAW,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC1E,CAAA;AAEA,IAAO,MAAA,CAAA,GAAA,IAAO,MAAM,wBAAwB,CAAA,CAAA;AAC5C,IAAO,MAAA,CAAA,IAAA,IAAQ,MAAM,yBAAyB,CAAA,CAAA;AAE9C,IAAA,MAAM,YAAY,MAAO,CAAA,UAAA,EAAa,CAAA,OAAA,CAAQ,MAAM,EAAE,CAAA,CAAA;AACtD,IAAA,MAAM,OAA2B,GAAA;AAAA,MAC/B,SAAW,EAAA,SAAA;AAAA,MACX,IAAI,KAAM,CAAA,UAAA;AAAA,MACV,MAAQ,EAAA;AAAA,QACN;AAAA,UACE,QAAQ,MAAO,CAAA,GAAA;AAAA,UACf,cAAc,GAAI,CAAA,MAAA;AAAA,SACpB;AAAA,QACA;AAAA,UACE,QAAQ,MAAO,CAAA,IAAA;AAAA,UACf,cAAc,IAAK,CAAA,MAAA;AAAA,SACrB;AAAA,OACF;AAAA,MACA,WAAA,EAAa,MAAM,QAAS,CAAA,MAAA;AAAA,KAC9B,CAAA;AACA,IAAA,MAAM,EAAE,YAAa,EAAA,GAAI,MAAM,OAAQ,CAAA,aAAA,CAAc,IAAI,OAAO,CAAA,CAAA;AAChE,IAAO,OAAA,EAAE,WAAW,YAAa,EAAA,CAAA;AAAA,WAC1B,KAAgB,EAAA;AACvB,IAAQ,OAAA,CAAA,KAAA,CAAM,iCAAiC,KAAK,CAAA,CAAA;AACpD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;;;"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { worldchainUSDC } from '@daimo/pay-common';
|
|
2
|
+
import { MiniKit } from '@worldcoin/minikit-js';
|
|
3
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
4
|
+
import { getAddress } from 'viem';
|
|
5
|
+
import { ROUTES } from '../constants/routes.js';
|
|
6
|
+
import { useDaimoPay } from '../hooks/useDaimoPay.js';
|
|
7
|
+
import { usePayContext } from '../hooks/usePayContext.js';
|
|
8
|
+
import { useWorldSignIn } from './useWorldSignIn.js';
|
|
9
|
+
|
|
10
|
+
function useWithdrawToWorld() {
|
|
11
|
+
const { signInWithWorld } = useWorldSignIn();
|
|
12
|
+
const [isMiniKitReady, setIsMiniKitReady] = useState(false);
|
|
13
|
+
const pay = useDaimoPay();
|
|
14
|
+
const context = usePayContext();
|
|
15
|
+
const { paymentState, log } = context;
|
|
16
|
+
const [modalOptions, setModalOptions] = useState({
|
|
17
|
+
closeOnSuccess: false,
|
|
18
|
+
resetOnSuccess: false
|
|
19
|
+
});
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
log("[WORLD] Installing MiniKit");
|
|
22
|
+
const result = MiniKit.install();
|
|
23
|
+
log("[WORLD] MiniKit install result", result);
|
|
24
|
+
log("[WORLD] MiniKit is installed", MiniKit.isInstalled());
|
|
25
|
+
setIsMiniKitReady(MiniKit.isInstalled());
|
|
26
|
+
}, []);
|
|
27
|
+
const showSpinner = useCallback(() => {
|
|
28
|
+
log(`[WORLD] showing spinner ${pay.order?.id}`);
|
|
29
|
+
context.showPayment(modalOptions);
|
|
30
|
+
context.setRoute(ROUTES.CONFIRMATION);
|
|
31
|
+
}, [pay.order?.id, modalOptions]);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (pay.paymentState === "payment_started") {
|
|
34
|
+
showSpinner();
|
|
35
|
+
}
|
|
36
|
+
}, [pay.paymentState, showSpinner]);
|
|
37
|
+
const withdrawToWorld = useCallback(
|
|
38
|
+
async ({
|
|
39
|
+
appId,
|
|
40
|
+
toUnits,
|
|
41
|
+
closeOnSuccess = false,
|
|
42
|
+
resetOnSuccess = false
|
|
43
|
+
}) => {
|
|
44
|
+
if (!isMiniKitReady) {
|
|
45
|
+
console.error("[WORLD_WITHDRAW] MiniKit is not installed");
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const worldUser = await signInWithWorld();
|
|
49
|
+
if (!worldUser?.walletAddress) {
|
|
50
|
+
log("[WORLD_WITHDRAW] user is not signed in");
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
await paymentState.setPayParams({
|
|
54
|
+
appId,
|
|
55
|
+
toChain: worldchainUSDC.chainId,
|
|
56
|
+
toToken: getAddress(worldchainUSDC.token),
|
|
57
|
+
toUnits,
|
|
58
|
+
toAddress: getAddress(worldUser.walletAddress),
|
|
59
|
+
intent: "Withdraw to World App"
|
|
60
|
+
});
|
|
61
|
+
const hydratedState = await pay.hydrateOrder();
|
|
62
|
+
const intentAddress = hydratedState.order.intentAddr;
|
|
63
|
+
log(
|
|
64
|
+
`[WORLD_WITHDRAW] hydrated order ${pay.order?.id} with intent address ${intentAddress}. Polling for payment`
|
|
65
|
+
);
|
|
66
|
+
setModalOptions({ closeOnSuccess, resetOnSuccess });
|
|
67
|
+
return intentAddress;
|
|
68
|
+
},
|
|
69
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70
|
+
[isMiniKitReady, signInWithWorld, pay, log]
|
|
71
|
+
);
|
|
72
|
+
return { withdrawToWorld };
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export { useWithdrawToWorld };
|
|
76
|
+
//# sourceMappingURL=useWithdrawToWorld.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWithdrawToWorld.js","sources":["../../../../../../src/world-mini-app/useWithdrawToWorld.tsx"],"sourcesContent":["import { worldchainUSDC } from \"@daimo/pay-common\";\nimport { MiniKit } from \"@worldcoin/minikit-js\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { Address, getAddress } from \"viem\";\nimport { ROUTES } from \"../constants/routes\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePayContext } from \"../hooks/usePayContext\";\nimport { DaimoPayModalOptions } from \"../types\";\nimport { useWorldSignIn } from \"./useWorldSignIn\";\n\nexport function useWithdrawToWorld() {\n const { signInWithWorld } = useWorldSignIn();\n const [isMiniKitReady, setIsMiniKitReady] = useState(false);\n\n const pay = useDaimoPay();\n const context = usePayContext();\n const { paymentState, log } = context;\n const [modalOptions, setModalOptions] = useState<DaimoPayModalOptions>({\n closeOnSuccess: false,\n resetOnSuccess: false,\n });\n\n // Install Minikit if not already installed\n useEffect(() => {\n log(\"[WORLD] Installing MiniKit\");\n const result = MiniKit.install();\n log(\"[WORLD] MiniKit install result\", result);\n log(\"[WORLD] MiniKit is installed\", MiniKit.isInstalled());\n setIsMiniKitReady(MiniKit.isInstalled());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const showSpinner = useCallback(() => {\n log(`[WORLD] showing spinner ${pay.order?.id}`);\n context.showPayment(modalOptions);\n context.setRoute(ROUTES.CONFIRMATION);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order?.id, modalOptions]);\n\n // Auto-open spinner when payment starts\n useEffect(() => {\n if (pay.paymentState === \"payment_started\") {\n showSpinner();\n }\n }, [pay.paymentState, showSpinner]);\n\n const withdrawToWorld = useCallback(\n async ({\n appId,\n toUnits,\n closeOnSuccess = false,\n resetOnSuccess = false,\n }: {\n appId: string;\n toUnits: string;\n closeOnSuccess?: boolean;\n resetOnSuccess?: boolean;\n }): Promise<Address | null> => {\n if (!isMiniKitReady) {\n console.error(\"[WORLD_WITHDRAW] MiniKit is not installed\");\n return null;\n }\n\n const worldUser = await signInWithWorld();\n\n if (!worldUser?.walletAddress) {\n log(\"[WORLD_WITHDRAW] user is not signed in\");\n return null;\n }\n\n // Create a payment to withdraw to the user's world wallet\n await paymentState.setPayParams({\n appId,\n toChain: worldchainUSDC.chainId,\n toToken: getAddress(worldchainUSDC.token),\n toUnits,\n toAddress: getAddress(worldUser.walletAddress),\n intent: \"Withdraw to World App\",\n });\n\n // Hydrate the order and return the intent address\n const hydratedState = await pay.hydrateOrder();\n const intentAddress = hydratedState.order.intentAddr;\n log(\n `[WORLD_WITHDRAW] hydrated order ${pay.order?.id} with intent address ${intentAddress}. Polling for payment`,\n );\n setModalOptions({ closeOnSuccess, resetOnSuccess });\n return intentAddress;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isMiniKitReady, signInWithWorld, pay, log],\n );\n\n return { withdrawToWorld };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { MiniKit } from '@worldcoin/minikit-js';
|
|
2
|
+
import { useState, useCallback } from 'react';
|
|
3
|
+
|
|
4
|
+
function useWorldSignIn() {
|
|
5
|
+
const [worldUser, setWorldUser] = useState(null);
|
|
6
|
+
const [isLoadingSignIn, setIsLoadingSignIn] = useState(false);
|
|
7
|
+
const signInWithWorld = useCallback(async () => {
|
|
8
|
+
if (worldUser != null) {
|
|
9
|
+
console.log("[WORLD_SIGNIN] user already signed in");
|
|
10
|
+
return worldUser;
|
|
11
|
+
}
|
|
12
|
+
setIsLoadingSignIn(true);
|
|
13
|
+
try {
|
|
14
|
+
if (!MiniKit.isInstalled()) {
|
|
15
|
+
console.log("[WORLD_SIGNIN] MiniKit is not installed");
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const res = await fetch("https://pay.daimo.com/api/worldcoin/siwe-nonce");
|
|
19
|
+
const { nonce } = await res.json();
|
|
20
|
+
console.log("[WORLD_SIGNIN] nonce", nonce);
|
|
21
|
+
const nextWeek = new Date(Date.now() + 7 * 24 * 60 * 60 * 1e3);
|
|
22
|
+
const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1e3);
|
|
23
|
+
const { commandPayload: generateMessageResult, finalPayload } = await MiniKit.commandsAsync.walletAuth({
|
|
24
|
+
nonce,
|
|
25
|
+
requestId: "0",
|
|
26
|
+
expirationTime: nextWeek,
|
|
27
|
+
notBefore: yesterday,
|
|
28
|
+
statement: "Sign in"
|
|
29
|
+
});
|
|
30
|
+
console.log(
|
|
31
|
+
"[WORLD_SIGNIN] generateMessageResult",
|
|
32
|
+
generateMessageResult
|
|
33
|
+
);
|
|
34
|
+
console.log("[WORLD_SIGNIN] finalPayload", finalPayload);
|
|
35
|
+
if (finalPayload.status === "error") {
|
|
36
|
+
return null;
|
|
37
|
+
} else {
|
|
38
|
+
const response = await fetch(
|
|
39
|
+
"https://pay.daimo.com/api/worldcoin/complete-siwe",
|
|
40
|
+
{
|
|
41
|
+
method: "POST",
|
|
42
|
+
headers: {
|
|
43
|
+
"Content-Type": "application/json"
|
|
44
|
+
},
|
|
45
|
+
body: JSON.stringify({
|
|
46
|
+
payload: finalPayload,
|
|
47
|
+
nonce
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
const verificationResponse = await response.json();
|
|
52
|
+
console.log(
|
|
53
|
+
"[WORLD_SIGNIN] verification response",
|
|
54
|
+
verificationResponse
|
|
55
|
+
);
|
|
56
|
+
if (verificationResponse.isValid) {
|
|
57
|
+
console.log("[WORLD_SIGNIN] user is valid");
|
|
58
|
+
const user = await MiniKit.getUserByAddress(finalPayload.address);
|
|
59
|
+
setWorldUser(user);
|
|
60
|
+
return user;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
} catch (error) {
|
|
64
|
+
console.error("[WORLD_SIGNIN] error", error);
|
|
65
|
+
} finally {
|
|
66
|
+
setIsLoadingSignIn(false);
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}, [setWorldUser, setIsLoadingSignIn, worldUser]);
|
|
70
|
+
return { signInWithWorld, worldUser, isLoadingSignIn };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { useWorldSignIn };
|
|
74
|
+
//# sourceMappingURL=useWorldSignIn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWorldSignIn.js","sources":["../../../../../../src/world-mini-app/useWorldSignIn.tsx"],"sourcesContent":["import { MiniKit } from \"@worldcoin/minikit-js\";\nimport { useCallback, useState } from \"react\";\n\nexport function useWorldSignIn(): {\n signInWithWorld: () => Promise<typeof MiniKit.user | null>;\n worldUser: typeof MiniKit.user | null;\n isLoadingSignIn: boolean;\n} {\n const [worldUser, setWorldUser] = useState<typeof MiniKit.user | null>(null);\n const [isLoadingSignIn, setIsLoadingSignIn] = useState(false);\n\n const signInWithWorld = useCallback(async (): Promise<\n typeof MiniKit.user | null\n > => {\n if (worldUser != null) {\n console.log(\"[WORLD_SIGNIN] user already signed in\");\n return worldUser;\n }\n\n setIsLoadingSignIn(true);\n try {\n if (!MiniKit.isInstalled()) {\n console.log(\"[WORLD_SIGNIN] MiniKit is not installed\");\n return null;\n }\n\n const res = await fetch(\"https://pay.daimo.com/api/worldcoin/siwe-nonce\");\n const { nonce } = await res.json();\n\n console.log(\"[WORLD_SIGNIN] nonce\", nonce);\n\n const nextWeek = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000);\n const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000);\n\n const { commandPayload: generateMessageResult, finalPayload } =\n await MiniKit.commandsAsync.walletAuth({\n nonce,\n requestId: \"0\",\n expirationTime: nextWeek,\n notBefore: yesterday,\n statement: \"Sign in\",\n });\n\n console.log(\n \"[WORLD_SIGNIN] generateMessageResult\",\n generateMessageResult,\n );\n console.log(\"[WORLD_SIGNIN] finalPayload\", finalPayload);\n\n if (finalPayload.status === \"error\") {\n return null;\n } else {\n const response = await fetch(\n \"https://pay.daimo.com/api/worldcoin/complete-siwe\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n payload: finalPayload,\n nonce,\n }),\n },\n );\n const verificationResponse = await response.json();\n\n console.log(\n \"[WORLD_SIGNIN] verification response\",\n verificationResponse,\n );\n if (verificationResponse.isValid) {\n console.log(\"[WORLD_SIGNIN] user is valid\");\n const user = await MiniKit.getUserByAddress(finalPayload.address);\n setWorldUser(user);\n return user;\n }\n }\n } catch (error) {\n console.error(\"[WORLD_SIGNIN] error\", error);\n } finally {\n setIsLoadingSignIn(false);\n }\n return null;\n }, [setWorldUser, setIsLoadingSignIn, worldUser]);\n\n return { signInWithWorld, worldUser, isLoadingSignIn };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"world.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -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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"}
|