@daimo/pay 1.19.0 → 1.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/build/package.json.js +2 -2
  2. package/build/src/components/DaimoPayModal/index.js +17 -3
  3. package/build/src/components/DaimoPayModal/index.js.map +1 -1
  4. package/build/src/components/Pages/SelectExchange/index.js +20 -5
  5. package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
  6. package/build/src/components/Pages/SelectMethod/index.js +7 -4
  7. package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
  8. package/build/src/hooks/useConnectors.js +12 -1
  9. package/build/src/hooks/useConnectors.js.map +1 -1
  10. package/build/src/hooks/usePaymentState.js +4 -1
  11. package/build/src/hooks/usePaymentState.js.map +1 -1
  12. package/build/src/wallets/useWallets.js +1 -0
  13. package/build/src/wallets/useWallets.js.map +1 -1
  14. package/package.json +2 -2
  15. package/build/connectkit/package.json.js +0 -117
  16. package/build/connectkit/package.json.js.map +0 -1
  17. package/build/connectkit/src/assets/MobileWithLogos.js +0 -329
  18. package/build/connectkit/src/assets/MobileWithLogos.js.map +0 -1
  19. package/build/connectkit/src/assets/ScanIconWithLogos.js +0 -243
  20. package/build/connectkit/src/assets/ScanIconWithLogos.js.map +0 -1
  21. package/build/connectkit/src/assets/browsers.js +0 -969
  22. package/build/connectkit/src/assets/browsers.js.map +0 -1
  23. package/build/connectkit/src/assets/chains.js +0 -648
  24. package/build/connectkit/src/assets/chains.js.map +0 -1
  25. package/build/connectkit/src/assets/coins.js +0 -43
  26. package/build/connectkit/src/assets/coins.js.map +0 -1
  27. package/build/connectkit/src/assets/icons.js +0 -273
  28. package/build/connectkit/src/assets/icons.js.map +0 -1
  29. package/build/connectkit/src/assets/logos.js +0 -1620
  30. package/build/connectkit/src/assets/logos.js.map +0 -1
  31. package/build/connectkit/src/assets/wave.js +0 -46
  32. package/build/connectkit/src/assets/wave.js.map +0 -1
  33. package/build/connectkit/src/components/Common/Alert/index.js +0 -13
  34. package/build/connectkit/src/components/Common/Alert/index.js.map +0 -1
  35. package/build/connectkit/src/components/Common/Alert/styles.js +0 -55
  36. package/build/connectkit/src/components/Common/Alert/styles.js.map +0 -1
  37. package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js +0 -71
  38. package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +0 -1
  39. package/build/connectkit/src/components/Common/AmountInput/index.js +0 -159
  40. package/build/connectkit/src/components/Common/AmountInput/index.js.map +0 -1
  41. package/build/connectkit/src/components/Common/Avatar/index.js +0 -78
  42. package/build/connectkit/src/components/Common/Avatar/index.js.map +0 -1
  43. package/build/connectkit/src/components/Common/Avatar/styles.js +0 -54
  44. package/build/connectkit/src/components/Common/Avatar/styles.js.map +0 -1
  45. package/build/connectkit/src/components/Common/BrowserIcon/index.js +0 -29
  46. package/build/connectkit/src/components/Common/BrowserIcon/index.js.map +0 -1
  47. package/build/connectkit/src/components/Common/BrowserIcon/styles.js +0 -20
  48. package/build/connectkit/src/components/Common/BrowserIcon/styles.js.map +0 -1
  49. package/build/connectkit/src/components/Common/Button/index.js +0 -144
  50. package/build/connectkit/src/components/Common/Button/index.js.map +0 -1
  51. package/build/connectkit/src/components/Common/Button/styles.js +0 -287
  52. package/build/connectkit/src/components/Common/Button/styles.js.map +0 -1
  53. package/build/connectkit/src/components/Common/Chain/index.js +0 -141
  54. package/build/connectkit/src/components/Common/Chain/index.js.map +0 -1
  55. package/build/connectkit/src/components/Common/Chain/styles.js +0 -90
  56. package/build/connectkit/src/components/Common/Chain/styles.js.map +0 -1
  57. package/build/connectkit/src/components/Common/ChainSelectList/index.js +0 -250
  58. package/build/connectkit/src/components/Common/ChainSelectList/index.js.map +0 -1
  59. package/build/connectkit/src/components/Common/ChainSelectList/styles.js +0 -226
  60. package/build/connectkit/src/components/Common/ChainSelectList/styles.js.map +0 -1
  61. package/build/connectkit/src/components/Common/CircleTimer.js +0 -92
  62. package/build/connectkit/src/components/Common/CircleTimer.js.map +0 -1
  63. package/build/connectkit/src/components/Common/ConnectorList/index.js +0 -120
  64. package/build/connectkit/src/components/Common/ConnectorList/index.js.map +0 -1
  65. package/build/connectkit/src/components/Common/ConnectorList/styles.js +0 -344
  66. package/build/connectkit/src/components/Common/ConnectorList/styles.js.map +0 -1
  67. package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +0 -78
  68. package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +0 -1
  69. package/build/connectkit/src/components/Common/CopyToClipboard/index.js +0 -33
  70. package/build/connectkit/src/components/Common/CopyToClipboard/index.js.map +0 -1
  71. package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js +0 -128
  72. package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +0 -1
  73. package/build/connectkit/src/components/Common/CustomQRCode/index.js +0 -71
  74. package/build/connectkit/src/components/Common/CustomQRCode/index.js.map +0 -1
  75. package/build/connectkit/src/components/Common/CustomQRCode/styles.js +0 -139
  76. package/build/connectkit/src/components/Common/CustomQRCode/styles.js.map +0 -1
  77. package/build/connectkit/src/components/Common/FitText/index.js +0 -34
  78. package/build/connectkit/src/components/Common/FitText/index.js.map +0 -1
  79. package/build/connectkit/src/components/Common/Modal/index.js +0 -523
  80. package/build/connectkit/src/components/Common/Modal/index.js.map +0 -1
  81. package/build/connectkit/src/components/Common/Modal/styles.js +0 -665
  82. package/build/connectkit/src/components/Common/Modal/styles.js.map +0 -1
  83. package/build/connectkit/src/components/Common/OptionsList/index.js +0 -145
  84. package/build/connectkit/src/components/Common/OptionsList/index.js.map +0 -1
  85. package/build/connectkit/src/components/Common/OptionsList/styles.js +0 -138
  86. package/build/connectkit/src/components/Common/OptionsList/styles.js.map +0 -1
  87. package/build/connectkit/src/components/Common/OrderHeader/index.js +0 -192
  88. package/build/connectkit/src/components/Common/OrderHeader/index.js.map +0 -1
  89. package/build/connectkit/src/components/Common/PaymentBreakdown/index.js +0 -70
  90. package/build/connectkit/src/components/Common/PaymentBreakdown/index.js.map +0 -1
  91. package/build/connectkit/src/components/Common/Portal/index.js +0 -30
  92. package/build/connectkit/src/components/Common/Portal/index.js.map +0 -1
  93. package/build/connectkit/src/components/Common/PoweredByFooter/index.js +0 -66
  94. package/build/connectkit/src/components/Common/PoweredByFooter/index.js.map +0 -1
  95. package/build/connectkit/src/components/Common/ScrollArea/index.js +0 -120
  96. package/build/connectkit/src/components/Common/ScrollArea/index.js.map +0 -1
  97. package/build/connectkit/src/components/Common/ScrollArea/styles.js +0 -169
  98. package/build/connectkit/src/components/Common/ScrollArea/styles.js.map +0 -1
  99. package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js +0 -96
  100. package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +0 -1
  101. package/build/connectkit/src/components/Common/Spinner/index.js +0 -64
  102. package/build/connectkit/src/components/Common/Spinner/index.js.map +0 -1
  103. package/build/connectkit/src/components/Common/Spinner/styles.js +0 -22
  104. package/build/connectkit/src/components/Common/Spinner/styles.js.map +0 -1
  105. package/build/connectkit/src/components/Common/SwitchButton/index.js +0 -43
  106. package/build/connectkit/src/components/Common/SwitchButton/index.js.map +0 -1
  107. package/build/connectkit/src/components/Common/ThemedButton/index.js +0 -46
  108. package/build/connectkit/src/components/Common/ThemedButton/index.js.map +0 -1
  109. package/build/connectkit/src/components/Common/ThemedButton/styles.js +0 -152
  110. package/build/connectkit/src/components/Common/ThemedButton/styles.js.map +0 -1
  111. package/build/connectkit/src/components/Common/TokenChainLogo/index.js +0 -62
  112. package/build/connectkit/src/components/Common/TokenChainLogo/index.js.map +0 -1
  113. package/build/connectkit/src/components/Common/Tooltip/index.js +0 -129
  114. package/build/connectkit/src/components/Common/Tooltip/index.js.map +0 -1
  115. package/build/connectkit/src/components/Common/Tooltip/styles.js +0 -81
  116. package/build/connectkit/src/components/Common/Tooltip/styles.js.map +0 -1
  117. package/build/connectkit/src/components/Common/WalletChainLogo/index.js +0 -31
  118. package/build/connectkit/src/components/Common/WalletChainLogo/index.js.map +0 -1
  119. package/build/connectkit/src/components/DaimoPayButton/index.js +0 -197
  120. package/build/connectkit/src/components/DaimoPayButton/index.js.map +0 -1
  121. package/build/connectkit/src/components/DaimoPayButton/styles.js +0 -50
  122. package/build/connectkit/src/components/DaimoPayButton/styles.js.map +0 -1
  123. package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js +0 -68
  124. package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +0 -1
  125. package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js +0 -335
  126. package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +0 -1
  127. package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js +0 -131
  128. package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +0 -1
  129. package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js +0 -99
  130. package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js.map +0 -1
  131. package/build/connectkit/src/components/DaimoPayModal/index.js +0 -462
  132. package/build/connectkit/src/components/DaimoPayModal/index.js.map +0 -1
  133. package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +0 -25
  134. package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +0 -1
  135. package/build/connectkit/src/components/Pages/About/graphics.js +0 -853
  136. package/build/connectkit/src/components/Pages/About/graphics.js.map +0 -1
  137. package/build/connectkit/src/components/Pages/About/index.js +0 -222
  138. package/build/connectkit/src/components/Pages/About/index.js.map +0 -1
  139. package/build/connectkit/src/components/Pages/About/styles.js +0 -140
  140. package/build/connectkit/src/components/Pages/About/styles.js.map +0 -1
  141. package/build/connectkit/src/components/Pages/Confirmation/index.js +0 -128
  142. package/build/connectkit/src/components/Pages/Confirmation/index.js.map +0 -1
  143. package/build/connectkit/src/components/Pages/Connectors/index.js +0 -28
  144. package/build/connectkit/src/components/Pages/Connectors/index.js.map +0 -1
  145. package/build/connectkit/src/components/Pages/DownloadApp/index.js +0 -35
  146. package/build/connectkit/src/components/Pages/DownloadApp/index.js.map +0 -1
  147. package/build/connectkit/src/components/Pages/Error/index.js +0 -57
  148. package/build/connectkit/src/components/Pages/Error/index.js.map +0 -1
  149. package/build/connectkit/src/components/Pages/MobileConnectors/index.js +0 -65
  150. package/build/connectkit/src/components/Pages/MobileConnectors/index.js.map +0 -1
  151. package/build/connectkit/src/components/Pages/MobileConnectors/styles.js +0 -64
  152. package/build/connectkit/src/components/Pages/MobileConnectors/styles.js.map +0 -1
  153. package/build/connectkit/src/components/Pages/Onboarding/index.js +0 -34
  154. package/build/connectkit/src/components/Pages/Onboarding/index.js.map +0 -1
  155. package/build/connectkit/src/components/Pages/Onboarding/styles.js +0 -229
  156. package/build/connectkit/src/components/Pages/Onboarding/styles.js.map +0 -1
  157. package/build/connectkit/src/components/Pages/PayWithToken/index.js +0 -157
  158. package/build/connectkit/src/components/Pages/PayWithToken/index.js.map +0 -1
  159. package/build/connectkit/src/components/Pages/SelectAmount/index.js +0 -24
  160. package/build/connectkit/src/components/Pages/SelectAmount/index.js.map +0 -1
  161. package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js +0 -79
  162. package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +0 -1
  163. package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js +0 -72
  164. package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +0 -1
  165. package/build/connectkit/src/components/Pages/SelectExchange/index.js +0 -41
  166. package/build/connectkit/src/components/Pages/SelectExchange/index.js.map +0 -1
  167. package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js +0 -80
  168. package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +0 -1
  169. package/build/connectkit/src/components/Pages/SelectMethod/index.js +0 -230
  170. package/build/connectkit/src/components/Pages/SelectMethod/index.js.map +0 -1
  171. package/build/connectkit/src/components/Pages/SelectToken/index.js +0 -97
  172. package/build/connectkit/src/components/Pages/SelectToken/index.js.map +0 -1
  173. package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js +0 -66
  174. package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +0 -1
  175. package/build/connectkit/src/components/Pages/SelectWalletChain/index.js +0 -55
  176. package/build/connectkit/src/components/Pages/SelectWalletChain/index.js.map +0 -1
  177. package/build/connectkit/src/components/Pages/SelectZKP/index.js +0 -41
  178. package/build/connectkit/src/components/Pages/SelectZKP/index.js.map +0 -1
  179. package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js +0 -94
  180. package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +0 -1
  181. package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js +0 -92
  182. package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +0 -1
  183. package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js +0 -24
  184. package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +0 -1
  185. package/build/connectkit/src/components/Pages/SwitchNetworks/index.js +0 -45
  186. package/build/connectkit/src/components/Pages/SwitchNetworks/index.js.map +0 -1
  187. package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js +0 -503
  188. package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +0 -1
  189. package/build/connectkit/src/components/Pages/WaitingExternal/index.js +0 -89
  190. package/build/connectkit/src/components/Pages/WaitingExternal/index.js.map +0 -1
  191. package/build/connectkit/src/components/Pages/WaitingWallet/index.js +0 -49
  192. package/build/connectkit/src/components/Pages/WaitingWallet/index.js.map +0 -1
  193. package/build/connectkit/src/components/Spinners/CircleSpinner/index.js +0 -104
  194. package/build/connectkit/src/components/Spinners/CircleSpinner/index.js.map +0 -1
  195. package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js +0 -117
  196. package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +0 -1
  197. package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js +0 -29
  198. package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +0 -1
  199. package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js +0 -68
  200. package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +0 -1
  201. package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js +0 -66
  202. package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +0 -1
  203. package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js +0 -24
  204. package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +0 -1
  205. package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js +0 -40
  206. package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +0 -1
  207. package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js +0 -37
  208. package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +0 -1
  209. package/build/connectkit/src/components/Spinners/styles.js +0 -32
  210. package/build/connectkit/src/components/Spinners/styles.js.map +0 -1
  211. package/build/connectkit/src/constants/defaultTheme.js +0 -6
  212. package/build/connectkit/src/constants/defaultTheme.js.map +0 -1
  213. package/build/connectkit/src/constants/routes.js +0 -32
  214. package/build/connectkit/src/constants/routes.js.map +0 -1
  215. package/build/connectkit/src/defaultConfig.js +0 -63
  216. package/build/connectkit/src/defaultConfig.js.map +0 -1
  217. package/build/connectkit/src/defaultConnectors.js +0 -37
  218. package/build/connectkit/src/defaultConnectors.js.map +0 -1
  219. package/build/connectkit/src/hooks/useChainIsSupported.js +0 -10
  220. package/build/connectkit/src/hooks/useChainIsSupported.js.map +0 -1
  221. package/build/connectkit/src/hooks/useChains.js +0 -10
  222. package/build/connectkit/src/hooks/useChains.js.map +0 -1
  223. package/build/connectkit/src/hooks/useConnect.js +0 -61
  224. package/build/connectkit/src/hooks/useConnect.js.map +0 -1
  225. package/build/connectkit/src/hooks/useConnectCallback.js +0 -21
  226. package/build/connectkit/src/hooks/useConnectCallback.js.map +0 -1
  227. package/build/connectkit/src/hooks/useConnectors.js +0 -9
  228. package/build/connectkit/src/hooks/useConnectors.js.map +0 -1
  229. package/build/connectkit/src/hooks/useDaimoPay.js +0 -107
  230. package/build/connectkit/src/hooks/useDaimoPay.js.map +0 -1
  231. package/build/connectkit/src/hooks/useDaimoPayStatus.js +0 -12
  232. package/build/connectkit/src/hooks/useDaimoPayStatus.js.map +0 -1
  233. package/build/connectkit/src/hooks/useDaimoPayUI.js +0 -15
  234. package/build/connectkit/src/hooks/useDaimoPayUI.js.map +0 -1
  235. package/build/connectkit/src/hooks/useDepositAddressOptions.js +0 -35
  236. package/build/connectkit/src/hooks/useDepositAddressOptions.js.map +0 -1
  237. package/build/connectkit/src/hooks/useEnsFallbackConfig.js +0 -16
  238. package/build/connectkit/src/hooks/useEnsFallbackConfig.js.map +0 -1
  239. package/build/connectkit/src/hooks/useExternalPaymentOptions.js +0 -64
  240. package/build/connectkit/src/hooks/useExternalPaymentOptions.js.map +0 -1
  241. package/build/connectkit/src/hooks/useFitText.js +0 -133
  242. package/build/connectkit/src/hooks/useFitText.js.map +0 -1
  243. package/build/connectkit/src/hooks/useFocusTrap.js +0 -53
  244. package/build/connectkit/src/hooks/useFocusTrap.js.map +0 -1
  245. package/build/connectkit/src/hooks/useIsMobile.js +0 -11
  246. package/build/connectkit/src/hooks/useIsMobile.js.map +0 -1
  247. package/build/connectkit/src/hooks/useIsMounted.js +0 -10
  248. package/build/connectkit/src/hooks/useIsMounted.js.map +0 -1
  249. package/build/connectkit/src/hooks/useLastConnector.js +0 -24
  250. package/build/connectkit/src/hooks/useLastConnector.js.map +0 -1
  251. package/build/connectkit/src/hooks/useLocales.js +0 -60
  252. package/build/connectkit/src/hooks/useLocales.js.map +0 -1
  253. package/build/connectkit/src/hooks/useLockBodyScroll.js +0 -47
  254. package/build/connectkit/src/hooks/useLockBodyScroll.js.map +0 -1
  255. package/build/connectkit/src/hooks/useOrderUsdLimits.js +0 -24
  256. package/build/connectkit/src/hooks/useOrderUsdLimits.js.map +0 -1
  257. package/build/connectkit/src/hooks/usePayContext.js +0 -11
  258. package/build/connectkit/src/hooks/usePayContext.js.map +0 -1
  259. package/build/connectkit/src/hooks/usePaymentState.js +0 -376
  260. package/build/connectkit/src/hooks/usePaymentState.js.map +0 -1
  261. package/build/connectkit/src/hooks/usePrevious.js +0 -13
  262. package/build/connectkit/src/hooks/usePrevious.js.map +0 -1
  263. package/build/connectkit/src/hooks/useSolanaPaymentOptions.js +0 -40
  264. package/build/connectkit/src/hooks/useSolanaPaymentOptions.js.map +0 -1
  265. package/build/connectkit/src/hooks/useTokenOptions.js +0 -152
  266. package/build/connectkit/src/hooks/useTokenOptions.js.map +0 -1
  267. package/build/connectkit/src/hooks/useUntronAvailability.js +0 -32
  268. package/build/connectkit/src/hooks/useUntronAvailability.js.map +0 -1
  269. package/build/connectkit/src/hooks/useWalletPaymentOptions.js +0 -97
  270. package/build/connectkit/src/hooks/useWalletPaymentOptions.js.map +0 -1
  271. package/build/connectkit/src/hooks/useWindowSize.js +0 -23
  272. package/build/connectkit/src/hooks/useWindowSize.js.map +0 -1
  273. package/build/connectkit/src/index.js +0 -14
  274. package/build/connectkit/src/index.js.map +0 -1
  275. package/build/connectkit/src/localizations/index.js +0 -48
  276. package/build/connectkit/src/localizations/index.js.map +0 -1
  277. package/build/connectkit/src/localizations/locales/ar-AE.js +0 -95
  278. package/build/connectkit/src/localizations/locales/ar-AE.js.map +0 -1
  279. package/build/connectkit/src/localizations/locales/ca-AD.js +0 -93
  280. package/build/connectkit/src/localizations/locales/ca-AD.js.map +0 -1
  281. package/build/connectkit/src/localizations/locales/ee-EE.js +0 -101
  282. package/build/connectkit/src/localizations/locales/ee-EE.js.map +0 -1
  283. package/build/connectkit/src/localizations/locales/en-US.js +0 -139
  284. package/build/connectkit/src/localizations/locales/en-US.js.map +0 -1
  285. package/build/connectkit/src/localizations/locales/es-ES.js +0 -131
  286. package/build/connectkit/src/localizations/locales/es-ES.js.map +0 -1
  287. package/build/connectkit/src/localizations/locales/fa-IR.js +0 -93
  288. package/build/connectkit/src/localizations/locales/fa-IR.js.map +0 -1
  289. package/build/connectkit/src/localizations/locales/fr-FR.js +0 -93
  290. package/build/connectkit/src/localizations/locales/fr-FR.js.map +0 -1
  291. package/build/connectkit/src/localizations/locales/ja-JP.js +0 -93
  292. package/build/connectkit/src/localizations/locales/ja-JP.js.map +0 -1
  293. package/build/connectkit/src/localizations/locales/pt-BR.js +0 -101
  294. package/build/connectkit/src/localizations/locales/pt-BR.js.map +0 -1
  295. package/build/connectkit/src/localizations/locales/ru-RU.js +0 -97
  296. package/build/connectkit/src/localizations/locales/ru-RU.js.map +0 -1
  297. package/build/connectkit/src/localizations/locales/tr-TR.js +0 -101
  298. package/build/connectkit/src/localizations/locales/tr-TR.js.map +0 -1
  299. package/build/connectkit/src/localizations/locales/vi-VN.js +0 -101
  300. package/build/connectkit/src/localizations/locales/vi-VN.js.map +0 -1
  301. package/build/connectkit/src/localizations/locales/zh-CN.js +0 -93
  302. package/build/connectkit/src/localizations/locales/zh-CN.js.map +0 -1
  303. package/build/connectkit/src/payment/paymentEffects.js +0 -269
  304. package/build/connectkit/src/payment/paymentEffects.js.map +0 -1
  305. package/build/connectkit/src/payment/paymentFsm.js +0 -194
  306. package/build/connectkit/src/payment/paymentFsm.js.map +0 -1
  307. package/build/connectkit/src/payment/paymentStore.js +0 -18
  308. package/build/connectkit/src/payment/paymentStore.js.map +0 -1
  309. package/build/connectkit/src/payment/paymentUtils.js +0 -10
  310. package/build/connectkit/src/payment/paymentUtils.js.map +0 -1
  311. package/build/connectkit/src/provider/DaimoPayProvider.js +0 -293
  312. package/build/connectkit/src/provider/DaimoPayProvider.js.map +0 -1
  313. package/build/connectkit/src/provider/PayContext.js +0 -6
  314. package/build/connectkit/src/provider/PayContext.js.map +0 -1
  315. package/build/connectkit/src/provider/PaymentProvider.js +0 -29
  316. package/build/connectkit/src/provider/PaymentProvider.js.map +0 -1
  317. package/build/connectkit/src/provider/SolanaContextProvider.js +0 -14
  318. package/build/connectkit/src/provider/SolanaContextProvider.js.map +0 -1
  319. package/build/connectkit/src/provider/Web3ContextProvider.js +0 -36
  320. package/build/connectkit/src/provider/Web3ContextProvider.js.map +0 -1
  321. package/build/connectkit/src/stateStore.js +0 -36
  322. package/build/connectkit/src/stateStore.js.map +0 -1
  323. package/build/connectkit/src/styles/defaultTheme.js +0 -80
  324. package/build/connectkit/src/styles/defaultTheme.js.map +0 -1
  325. package/build/connectkit/src/styles/index.js +0 -313
  326. package/build/connectkit/src/styles/index.js.map +0 -1
  327. package/build/connectkit/src/styles/styled/index.js +0 -6
  328. package/build/connectkit/src/styles/styled/index.js.map +0 -1
  329. package/build/connectkit/src/styles/themes/base.js +0 -141
  330. package/build/connectkit/src/styles/themes/base.js.map +0 -1
  331. package/build/connectkit/src/styles/themes/index.js +0 -13
  332. package/build/connectkit/src/styles/themes/index.js.map +0 -1
  333. package/build/connectkit/src/styles/themes/midnight.js +0 -76
  334. package/build/connectkit/src/styles/themes/midnight.js.map +0 -1
  335. package/build/connectkit/src/styles/themes/minimal.js +0 -96
  336. package/build/connectkit/src/styles/themes/minimal.js.map +0 -1
  337. package/build/connectkit/src/styles/themes/nouns.js +0 -81
  338. package/build/connectkit/src/styles/themes/nouns.js.map +0 -1
  339. package/build/connectkit/src/styles/themes/retro.js +0 -106
  340. package/build/connectkit/src/styles/themes/retro.js.map +0 -1
  341. package/build/connectkit/src/styles/themes/rounded.js +0 -106
  342. package/build/connectkit/src/styles/themes/rounded.js.map +0 -1
  343. package/build/connectkit/src/styles/themes/soft.js +0 -71
  344. package/build/connectkit/src/styles/themes/soft.js.map +0 -1
  345. package/build/connectkit/src/styles/themes/web95.js +0 -132
  346. package/build/connectkit/src/styles/themes/web95.js.map +0 -1
  347. package/build/connectkit/src/utils/exports.js +0 -6
  348. package/build/connectkit/src/utils/exports.js.map +0 -1
  349. package/build/connectkit/src/utils/format.js +0 -45
  350. package/build/connectkit/src/utils/format.js.map +0 -1
  351. package/build/connectkit/src/utils/index.js +0 -42
  352. package/build/connectkit/src/utils/index.js.map +0 -1
  353. package/build/connectkit/src/utils/p3.js +0 -15
  354. package/build/connectkit/src/utils/p3.js.map +0 -1
  355. package/build/connectkit/src/utils/platform.js +0 -11
  356. package/build/connectkit/src/utils/platform.js.map +0 -1
  357. package/build/connectkit/src/utils/polling.js +0 -35
  358. package/build/connectkit/src/utils/polling.js.map +0 -1
  359. package/build/connectkit/src/utils/supportUrl.js +0 -16
  360. package/build/connectkit/src/utils/supportUrl.js.map +0 -1
  361. package/build/connectkit/src/utils/trpc.js +0 -19
  362. package/build/connectkit/src/utils/trpc.js.map +0 -1
  363. package/build/connectkit/src/utils/validateInput.js +0 -16
  364. package/build/connectkit/src/utils/validateInput.js.map +0 -1
  365. package/build/connectkit/src/wallets/index.js +0 -21
  366. package/build/connectkit/src/wallets/index.js.map +0 -1
  367. package/build/connectkit/src/wallets/useWallets.js +0 -207
  368. package/build/connectkit/src/wallets/useWallets.js.map +0 -1
  369. package/build/connectkit/src/wallets/walletConfigs.js +0 -277
  370. package/build/connectkit/src/wallets/walletConfigs.js.map +0 -1
  371. package/build/connectkit/src/world-mini-app/WorldPayButton.js +0 -148
  372. package/build/connectkit/src/world-mini-app/WorldPayButton.js.map +0 -1
  373. package/build/connectkit/src/world-mini-app/promptWorldPayment.js +0 -59
  374. package/build/connectkit/src/world-mini-app/promptWorldPayment.js.map +0 -1
  375. package/build/connectkit/src/world.js +0 -2
  376. package/build/connectkit/src/world.js.map +0 -1
  377. package/build/pay-common/src/chain.js +0 -9
  378. package/build/pay-common/src/chain.js.map +0 -1
  379. package/build/src/assets/coins.js +0 -43
  380. package/build/src/assets/coins.js.map +0 -1
  381. package/build/src/components/Common/CopyToClipboard/index.js +0 -33
  382. package/build/src/components/Common/CopyToClipboard/index.js.map +0 -1
  383. package/build/src/components/Pages/DownloadApp/index.js +0 -35
  384. package/build/src/components/Pages/DownloadApp/index.js.map +0 -1
  385. package/build/types-20835014.d.ts +0 -68
@@ -1 +0,0 @@
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 { celo } from \"@daimo/pay-common/src/chain\";\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 ?? celo.chainId,\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,194 +0,0 @@
1
- import { assert, DaimoPayOrderMode, DaimoPayIntentStatus, isHydrated } from '@daimo/pay-common';
2
- import { parseUnits } from 'viem';
3
- import { getDisplayExpiresAt } from './paymentUtils.js';
4
-
5
- const initialPaymentState = { type: "idle" };
6
- function paymentReducer(state, event) {
7
- switch (state.type) {
8
- case "idle":
9
- return reduceIdle(state, event);
10
- case "preview":
11
- return reducePreview(state, event);
12
- case "unhydrated":
13
- return reduceUnhydrated(state, event);
14
- case "payment_unpaid":
15
- return reducePaymentUnpaid(state, event);
16
- case "payment_started":
17
- return reducePaymentStarted(state, event);
18
- case "payment_completed":
19
- case "payment_bounced":
20
- case "error":
21
- return reduceTerminal(state, event);
22
- /* satisfies exhaustiveness */
23
- default:
24
- const _exhaustive = state;
25
- return _exhaustive;
26
- }
27
- }
28
- function reduceIdle(state, event) {
29
- switch (event.type) {
30
- case "preview_generated": {
31
- const stateFromOrder = getStateFromOrder(event.order);
32
- if (stateFromOrder.type !== "unhydrated") {
33
- return stateFromOrder;
34
- }
35
- return {
36
- type: "preview",
37
- order: event.order,
38
- payParamsData: event.payParamsData
39
- };
40
- }
41
- case "order_loaded": {
42
- return getStateFromOrder(event.order);
43
- }
44
- case "error":
45
- return {
46
- type: "error",
47
- order: event.order,
48
- message: event.message
49
- };
50
- case "reset":
51
- return initialPaymentState;
52
- default:
53
- return state;
54
- }
55
- }
56
- function reducePreview(state, event) {
57
- assert(
58
- state.order.mode !== DaimoPayOrderMode.HYDRATED,
59
- "reducePreview called on hydrated order"
60
- );
61
- switch (event.type) {
62
- case "order_hydrated":
63
- return getStateFromHydratedOrder(event.order);
64
- case "set_chosen_usd": {
65
- const token = state.order.destFinalCallTokenAmount.token;
66
- const tokenUnits = (event.usd / token.priceFromUsd).toString();
67
- const tokenAmount = parseUnits(tokenUnits, token.decimals);
68
- return {
69
- type: "preview",
70
- order: {
71
- ...state.order,
72
- destFinalCallTokenAmount: {
73
- token,
74
- amount: tokenAmount.toString(),
75
- usd: event.usd
76
- }
77
- },
78
- payParamsData: state.payParamsData
79
- };
80
- }
81
- case "error":
82
- return {
83
- type: "error",
84
- order: event.order,
85
- message: event.message
86
- };
87
- case "reset":
88
- return initialPaymentState;
89
- default:
90
- return state;
91
- }
92
- }
93
- function reduceUnhydrated(state, event) {
94
- switch (event.type) {
95
- case "order_hydrated":
96
- return { type: "payment_unpaid", order: event.order };
97
- case "error":
98
- return {
99
- type: "error",
100
- order: event.order,
101
- message: event.message
102
- };
103
- case "reset":
104
- return initialPaymentState;
105
- default:
106
- return state;
107
- }
108
- }
109
- function reducePaymentUnpaid(state, event) {
110
- switch (event.type) {
111
- case "payment_verified": {
112
- if (event.order.intentStatus === DaimoPayIntentStatus.UNPAID) {
113
- return {
114
- type: "error",
115
- order: event.order,
116
- message: "Payment failed"
117
- };
118
- }
119
- return getStateFromHydratedOrder(event.order);
120
- }
121
- case "order_refreshed":
122
- return getStateFromHydratedOrder(event.order);
123
- case "error":
124
- return {
125
- type: "error",
126
- order: event.order,
127
- message: event.message
128
- };
129
- case "reset":
130
- return initialPaymentState;
131
- default:
132
- return state;
133
- }
134
- }
135
- function reducePaymentStarted(state, event) {
136
- switch (event.type) {
137
- case "order_refreshed":
138
- return getStateFromHydratedOrder(event.order);
139
- case "error":
140
- return {
141
- type: "error",
142
- order: event.order,
143
- message: event.message
144
- };
145
- case "reset":
146
- return initialPaymentState;
147
- default:
148
- return state;
149
- }
150
- }
151
- function getStateFromOrder(order) {
152
- if (order.mode === DaimoPayOrderMode.HYDRATED) {
153
- return getStateFromHydratedOrder(order);
154
- } else {
155
- return { type: "unhydrated", order };
156
- }
157
- }
158
- function getStateFromHydratedOrder(order) {
159
- assert(isHydrated(order), `[PAYMENT_REDUCER] unhydrated`);
160
- switch (order.intentStatus) {
161
- case DaimoPayIntentStatus.COMPLETED:
162
- return { type: "payment_completed", order };
163
- case DaimoPayIntentStatus.BOUNCED:
164
- return { type: "payment_bounced", order };
165
- }
166
- const displayExpiresAt = getDisplayExpiresAt(order);
167
- if (Date.now() / 1e3 > displayExpiresAt) {
168
- return {
169
- type: "error",
170
- order,
171
- message: "Payment expired. Please restart."
172
- };
173
- }
174
- switch (order.intentStatus) {
175
- case DaimoPayIntentStatus.UNPAID:
176
- return { type: "payment_unpaid", order };
177
- case DaimoPayIntentStatus.STARTED:
178
- return { type: "payment_started", order };
179
- default:
180
- return { type: "error", order, message: `Status: ${order.intentStatus}` };
181
- }
182
- }
183
- function reduceTerminal(state, event) {
184
- switch (event.type) {
185
- case "reset":
186
- return initialPaymentState;
187
- // In terminal states we ignore everything except reset
188
- default:
189
- return state;
190
- }
191
- }
192
-
193
- export { initialPaymentState, paymentReducer };
194
- //# sourceMappingURL=paymentFsm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentFsm.js","sources":["../../../../src/payment/paymentFsm.ts"],"sourcesContent":["import {\n assert,\n DaimoPayHydratedOrderWithOrg,\n DaimoPayIntentStatus,\n DaimoPayOrder,\n DaimoPayOrderID,\n DaimoPayOrderMode,\n DaimoPayOrderWithOrg,\n DaimoPayUserMetadata,\n ExternalPaymentOptionsString,\n isHydrated,\n SolanaPublicKey,\n UniquePaymentOptionsString,\n} from \"@daimo/pay-common\";\nimport { Address, Hex, parseUnits } from \"viem\";\nimport { getDisplayExpiresAt } from \"./paymentUtils\";\n\n/** Payment parameters. The payment is created only after user taps pay. */\nexport interface PayParams {\n /** App ID, for authentication. */\n appId: string;\n /** Destination chain ID. */\n toChain: number;\n /** The destination token to send. */\n toToken: Address;\n /**\n * The amount of the token to send.\n * If not provided, the user will be prompted to enter an amount.\n */\n toUnits?: string;\n /** The final address to transfer to or contract to call. */\n toAddress: Address;\n /** Calldata for final call, or empty data for transfer. */\n toCallData?: Hex;\n /** The intent verb, such as Pay, Deposit, or Purchase. Default: Pay */\n intent?: string;\n /** Payment options. By default, all are enabled. */\n paymentOptions?: ExternalPaymentOptionsString[];\n /** Preferred chain IDs. */\n preferredChains?: number[];\n /** Preferred tokens. These appear first in the token list. */\n preferredTokens?: { chain: number; address: Address }[];\n /** Only allow payments on these EVM chains. */\n evmChains?: number[];\n /** External ID. E.g. a correlation ID. */\n externalId?: string;\n /** Developer metadata. E.g. correlation ID. */\n metadata?: DaimoPayUserMetadata;\n /** The address to refund to if the payment bounces or a refund is requested. */\n refundAddress?: Address;\n /** Pass-through tokens. If the user pays via these tokens, they're sent directly without swapping. */\n passthroughTokens?: { chain: number; address: Address }[];\n /** Only show one payment option to the user. */\n uniquePaymentOption?: UniquePaymentOptionsString;\n}\n\nexport type PaymentState =\n // payParams and payId are set\n | { type: \"idle\" }\n // payParams are set, payId is not set. A preview order has been created\n // but not saved to the db\n | {\n type: \"preview\";\n order: DaimoPayOrderWithOrg;\n payParamsData: PayParamsData;\n }\n // payId is set, payParams are not set. An unhydrated order has been created\n // and saved to the db\n | { type: \"unhydrated\"; order: DaimoPayOrderWithOrg }\n // Order was hydrated and is waiting to be paid\n | { type: \"payment_unpaid\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid, destination was not processed\n | { type: \"payment_started\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid and processed successfully\n | { type: \"payment_completed\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid but the destination failed to process\n | { type: \"payment_bounced\"; order: DaimoPayHydratedOrderWithOrg }\n // An error occurred\n | { type: \"error\"; order: DaimoPayOrder | undefined; message: string };\n\nexport type PaymentStateType = PaymentState[\"type\"];\n\nexport const initialPaymentState: PaymentState = { type: \"idle\" };\n\nexport type PaymentEvent =\n /* command events (kick off an effect) */\n | { type: \"set_pay_params\"; payParams: PayParams }\n | { type: \"set_pay_id\"; payId: DaimoPayOrderID }\n // HACK: edit the order in-memory to change the amount in deposit flow\n | { type: \"set_chosen_usd\"; usd: number }\n | { type: \"hydrate_order\"; refundAddress?: Address }\n | {\n type: \"pay_source\";\n }\n | {\n type: \"pay_ethereum_source\";\n paymentTxHash: Hex;\n sourceChainId: number;\n payerAddress: Address;\n sourceToken: Address;\n sourceAmount: bigint;\n }\n | {\n type: \"pay_solana_source\";\n paymentTxHash: string;\n sourceToken: SolanaPublicKey;\n }\n /* result events (effect finished) */\n | {\n type: \"preview_generated\";\n order: DaimoPayOrderWithOrg;\n payParamsData: PayParamsData;\n }\n | { type: \"order_loaded\"; order: DaimoPayOrderWithOrg }\n | { type: \"order_hydrated\"; order: DaimoPayHydratedOrderWithOrg }\n | {\n type: \"payment_verified\";\n order: DaimoPayHydratedOrderWithOrg;\n }\n | {\n type: \"order_refreshed\";\n order: DaimoPayOrderWithOrg | DaimoPayHydratedOrderWithOrg;\n }\n | { type: \"dest_processed\"; order: DaimoPayHydratedOrderWithOrg }\n /* failure / util */\n | {\n type: \"error\";\n order: DaimoPayOrder | undefined;\n message: string;\n }\n | { type: \"reset\" };\n\ntype PayParamsData = {\n appId: string;\n};\n\n/**\n * Master payment reducer.\n */\nexport function paymentReducer(\n state: PaymentState,\n event: PaymentEvent,\n): PaymentState {\n switch (state.type) {\n case \"idle\":\n return reduceIdle(state, event);\n case \"preview\":\n return reducePreview(state, event);\n case \"unhydrated\":\n return reduceUnhydrated(state, event);\n case \"payment_unpaid\":\n return reducePaymentUnpaid(state, event);\n case \"payment_started\":\n return reducePaymentStarted(state, event);\n case \"payment_completed\":\n case \"payment_bounced\":\n case \"error\":\n return reduceTerminal(state, event);\n /* satisfies exhaustiveness */\n default:\n // Exhaustive check: Using `never` will cause lint failure if not all\n // state types are handled\n const _exhaustive: never = state;\n return _exhaustive;\n }\n}\n\n/* --------------------------------------------------\n reducer helpers – one function per state\n---------------------------------------------------*/\n\nfunction reduceIdle(\n state: Extract<PaymentState, { type: \"idle\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"preview_generated\": {\n const stateFromOrder = getStateFromOrder(event.order);\n\n // If order is already hydrated or in terminal state, use that state\n if (stateFromOrder.type !== \"unhydrated\") {\n return stateFromOrder;\n }\n\n // Order is not hydrated/processed, handle as preview\n return {\n type: \"preview\",\n order: event.order,\n payParamsData: event.payParamsData,\n };\n }\n case \"order_loaded\": {\n return getStateFromOrder(event.order);\n }\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePreview(\n state: Extract<PaymentState, { type: \"preview\" }>,\n event: PaymentEvent,\n): PaymentState {\n assert(\n state.order.mode !== DaimoPayOrderMode.HYDRATED,\n \"reducePreview called on hydrated order\",\n );\n\n switch (event.type) {\n case \"order_hydrated\":\n return getStateFromHydratedOrder(event.order);\n case \"set_chosen_usd\": {\n const token = state.order.destFinalCallTokenAmount.token;\n const tokenUnits = (event.usd / token.priceFromUsd).toString();\n const tokenAmount = parseUnits(tokenUnits, token.decimals);\n\n // Stay in preview state, but update the order's destFinalCallTokenAmount\n return {\n type: \"preview\",\n order: {\n ...state.order,\n destFinalCallTokenAmount: {\n token,\n amount: tokenAmount.toString() as `${bigint}`,\n usd: event.usd,\n },\n },\n payParamsData: state.payParamsData,\n };\n }\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reduceUnhydrated(\n state: Extract<PaymentState, { type: \"unhydrated\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"order_hydrated\":\n return { type: \"payment_unpaid\", order: event.order };\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePaymentUnpaid(\n state: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"payment_verified\": {\n if (event.order.intentStatus === DaimoPayIntentStatus.UNPAID) {\n // The payment was not detected on chain, or some other error occurred.\n return {\n type: \"error\",\n order: event.order,\n message: \"Payment failed\",\n };\n }\n return getStateFromHydratedOrder(event.order);\n }\n case \"order_refreshed\":\n return getStateFromHydratedOrder(event.order);\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePaymentStarted(\n state: Extract<PaymentState, { type: \"payment_started\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"order_refreshed\":\n return getStateFromHydratedOrder(event.order);\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\n/**\n * Determines the appropriate payment state based on an order's status and mode.\n * Returns the appropriate payment state based on the order's mode and intent status.\n */\nfunction getStateFromOrder(order: DaimoPayOrderWithOrg): PaymentState {\n if (order.mode === DaimoPayOrderMode.HYDRATED) {\n return getStateFromHydratedOrder(order);\n } else {\n return { type: \"unhydrated\", order };\n }\n}\n\n/**\n * Determines the appropriate payment state for a hydrated order. Progresses\n * the payment through different processing states.\n */\nfunction getStateFromHydratedOrder(order: DaimoPayOrderWithOrg): PaymentState {\n assert(isHydrated(order), `[PAYMENT_REDUCER] unhydrated`);\n\n // Handle finished orders first\n switch (order.intentStatus) {\n case DaimoPayIntentStatus.COMPLETED:\n return { type: \"payment_completed\", order };\n case DaimoPayIntentStatus.BOUNCED:\n return { type: \"payment_bounced\", order };\n }\n\n // If unfinished, check if expired\n const displayExpiresAt = getDisplayExpiresAt(order);\n if (Date.now() / 1e3 > displayExpiresAt) {\n return {\n type: \"error\",\n order,\n message: \"Payment expired. Please restart.\",\n };\n }\n\n // Unfinished but not expired\n switch (order.intentStatus) {\n case DaimoPayIntentStatus.UNPAID:\n return { type: \"payment_unpaid\", order };\n case DaimoPayIntentStatus.STARTED:\n return { type: \"payment_started\", order };\n default:\n return { type: \"error\", order, message: `Status: ${order.intentStatus}` };\n }\n}\n\nfunction reduceTerminal(\n state: Extract<\n PaymentState,\n { type: \"payment_completed\" | \"payment_bounced\" | \"error\" }\n >,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"reset\":\n return initialPaymentState;\n // In terminal states we ignore everything except reset\n default:\n return state;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { waitForState, createStore } from '../stateStore.js';
2
- import { paymentReducer, initialPaymentState } from './paymentFsm.js';
3
-
4
- function createPaymentStore() {
5
- const store = createStore(paymentReducer, initialPaymentState);
6
- return store;
7
- }
8
- function waitForPaymentState(store, ...validTypes) {
9
- return waitForState(
10
- store,
11
- (s) => validTypes.includes(s.type),
12
- (s) => s.type === "error",
13
- (s) => s.message
14
- );
15
- }
16
-
17
- export { createPaymentStore, waitForPaymentState };
18
- //# sourceMappingURL=paymentStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentStore.js","sources":["../../../../src/payment/paymentStore.ts"],"sourcesContent":["import { createStore, waitForState } from \"../stateStore\";\nimport {\n initialPaymentState,\n PaymentEvent,\n paymentReducer,\n PaymentState,\n} from \"./paymentFsm\";\n\nexport type PaymentStore = ReturnType<\n typeof createStore<PaymentState, PaymentEvent>\n>;\n\nexport function createPaymentStore(): PaymentStore {\n const store = createStore(paymentReducer, initialPaymentState);\n return store;\n}\n\n/**\n * Wait for the `PaymentStore` to enter a state matching any of `validTypes`,\n * or reject as soon as it hits the `\"error\"` state.\n *\n * @returns Promise<T> resolving with the first matching state or rejecting with\n * the error message\n */\nexport function waitForPaymentState<\n const T extends readonly PaymentState[\"type\"][],\n>(\n store: PaymentStore,\n ...validTypes: T\n): Promise<Extract<PaymentState, { type: T[number] }>> {\n return waitForState<\n PaymentState,\n PaymentEvent,\n Extract<PaymentState, { type: T[number] }>\n >(\n store,\n (s): s is Extract<PaymentState, { type: T[number] }> =>\n (validTypes as readonly PaymentState[\"type\"][]).includes(s.type),\n (s) => s.type === \"error\",\n (s) => (s as Extract<PaymentState, { type: \"error\" }>).message,\n );\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,kBAAmC,GAAA;AACjD,EAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,cAAA,EAAgB,mBAAmB,CAAA,CAAA;AAC7D,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AASgB,SAAA,mBAAA,CAGd,UACG,UACkD,EAAA;AACrD,EAAO,OAAA,YAAA;AAAA,IAKL,KAAA;AAAA,IACA,CAAC,CAAA,KACE,UAA+C,CAAA,QAAA,CAAS,EAAE,IAAI,CAAA;AAAA,IACjE,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,OAAA;AAAA,IAClB,CAAC,MAAO,CAA+C,CAAA,OAAA;AAAA,GACzD,CAAA;AACF;;;;"}
@@ -1,10 +0,0 @@
1
- function getDisplayExpiresAt(order) {
2
- if (order.expirationTs == null) {
3
- return 1e9;
4
- }
5
- const expirationTs = Number(order.expirationTs);
6
- return expirationTs - 3600;
7
- }
8
-
9
- export { getDisplayExpiresAt };
10
- //# sourceMappingURL=paymentUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentUtils.js","sources":["../../../../src/payment/paymentUtils.ts"],"sourcesContent":["import { DaimoPayHydratedOrder } from \"@daimo/pay-common\";\n\n/**\n * Display payments as \"expired\" 1h before their actual expiration.\n * This ensures that users don't send payments that may arrive post-expiry.\n */\nexport function getDisplayExpiresAt(order: DaimoPayHydratedOrder) {\n if (order.expirationTs == null) {\n return 1e9; // past expiration\n }\n const expirationTs = Number(order.expirationTs);\n return expirationTs - 3600;\n}\n"],"names":[],"mappings":"AAMO,SAAS,oBAAoB,KAA8B,EAAA;AAChE,EAAI,IAAA,KAAA,CAAM,gBAAgB,IAAM,EAAA;AAC9B,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,YAAA,GAAe,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAC9C,EAAA,OAAO,YAAe,GAAA,IAAA,CAAA;AACxB;;;;"}
@@ -1,293 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { debugJson, DaimoPayOrderMode, DaimoPayOrderStatusSource } from '@daimo/pay-common';
3
- import { Buffer } from 'buffer';
4
- import React, { useMemo, useState, useRef, useCallback, useEffect, createElement } from 'react';
5
- import { ThemeProvider } from 'styled-components';
6
- import { WagmiContext } from 'wagmi';
7
- import { DaimoPayModal } from '../components/DaimoPayModal/index.js';
8
- import { ROUTES } from '../constants/routes.js';
9
- import { REQUIRED_CHAINS } from '../defaultConfig.js';
10
- import { useChains } from '../hooks/useChains.js';
11
- import { useConnectCallback } from '../hooks/useConnectCallback.js';
12
- import { useDaimoPay } from '../hooks/useDaimoPay.js';
13
- import { usePaymentState } from '../hooks/usePaymentState.js';
14
- import { PaymentProvider, PaymentContext } from './PaymentProvider.js';
15
- import defaultTheme from '../styles/defaultTheme.js';
16
- import { createTrpcClient } from '../utils/trpc.js';
17
- import { setInWalletPaymentUrlFromApiUrl } from '../wallets/walletConfigs.js';
18
- import { PayContext } from './PayContext.js';
19
- import { SolanaContextProvider } from './SolanaContextProvider.js';
20
- import { Web3ContextProvider } from './Web3ContextProvider.js';
21
-
22
- const DaimoPayUIProvider = ({
23
- children,
24
- theme = "auto",
25
- mode = "auto",
26
- customTheme,
27
- options,
28
- onConnect,
29
- onDisconnect,
30
- debugMode = false,
31
- payApiUrl,
32
- log
33
- }) => {
34
- if (!React.useContext(PaymentContext)) {
35
- throw Error("DaimoPayProvider must be within a PaymentProvider");
36
- }
37
- if (!React.useContext(WagmiContext)) {
38
- throw Error("DaimoPayProvider must be within a WagmiProvider");
39
- }
40
- if (React.useContext(PayContext)) {
41
- throw new Error(
42
- "Multiple, nested usages of DaimoPayProvider detected. Please use only one."
43
- );
44
- }
45
- useConnectCallback({
46
- onConnect,
47
- onDisconnect
48
- });
49
- const chains = useChains();
50
- for (const requiredChain of REQUIRED_CHAINS) {
51
- if (!chains.some((c) => c.id === requiredChain.id)) {
52
- throw new Error(
53
- `Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(", ")}. Use \`getDefaultConfig\` to automatically configure required chains.`
54
- );
55
- }
56
- }
57
- const defaultOptions = {
58
- language: "en-US",
59
- hideBalance: false,
60
- hideTooltips: false,
61
- hideQuestionMarkCTA: false,
62
- hideNoWalletCTA: false,
63
- hideRecentBadge: false,
64
- avoidLayoutShift: true,
65
- embedGoogleFonts: false,
66
- truncateLongENSAddress: true,
67
- reducedMotion: false,
68
- disclaimer: null,
69
- bufferPolyfill: true,
70
- customAvatar: void 0,
71
- initialChainId: void 0,
72
- enforceSupportedChains: false,
73
- ethereumOnboardingUrl: void 0,
74
- walletOnboardingUrl: void 0,
75
- overlayBlur: void 0,
76
- disableMobileInjector: false
77
- };
78
- const opts = Object.assign(
79
- {},
80
- defaultOptions,
81
- options
82
- );
83
- if (typeof window !== "undefined") {
84
- if (opts.bufferPolyfill) window.Buffer = window.Buffer ?? Buffer;
85
- }
86
- const pay = useDaimoPay();
87
- const [ckTheme, setTheme] = useState(theme);
88
- const [ckMode, setMode] = useState(mode);
89
- const [ckCustomTheme, setCustomTheme] = useState(
90
- customTheme ?? {}
91
- );
92
- const [ckLang, setLang] = useState("en-US");
93
- const [disableMobileInjector, setDisableMobileInjector] = useState(
94
- opts.disableMobileInjector ?? false
95
- );
96
- const onOpenRef = useRef();
97
- const onCloseRef = useRef();
98
- const setOnOpen = useCallback((fn) => {
99
- onOpenRef.current = fn;
100
- }, []);
101
- const setOnClose = useCallback((fn) => {
102
- onCloseRef.current = fn;
103
- }, []);
104
- const [open, setOpenState] = useState(false);
105
- const [lockPayParams, setLockPayParams] = useState(false);
106
- const [paymentCompleted, setPaymentCompleted] = useState(false);
107
- const [route, setRouteState] = useState(ROUTES.SELECT_METHOD);
108
- const [modalOptions, setModalOptions] = useState();
109
- const [uniquePaymentMethodPage, setUniquePaymentMethodPage] = useState(ROUTES.SELECT_METHOD);
110
- const [pendingConnectorId, setPendingConnectorId] = useState(void 0);
111
- const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
112
- const [solanaConnector, setSolanaConnector] = useState();
113
- const [errorMessage, setErrorMessage] = useState("");
114
- const [showContactSupport, setShowContactSupport] = useState(true);
115
- const [confirmationMessage, setConfirmationMessage] = useState(void 0);
116
- const [redirectReturnUrl, setRedirectReturnUrl] = useState(void 0);
117
- const trpc = useMemo(() => {
118
- return createTrpcClient(payApiUrl, sessionId);
119
- }, [payApiUrl, sessionId]);
120
- const [resize, onResize] = useState(0);
121
- useEffect(() => {
122
- setInWalletPaymentUrlFromApiUrl(payApiUrl);
123
- }, [payApiUrl]);
124
- const setOpen = useCallback(
125
- (open2, meta) => {
126
- setOpenState(open2);
127
- if (open2) {
128
- setLockPayParams(true);
129
- }
130
- if (!open2 && paymentCompleted && modalOptions?.resetOnSuccess) {
131
- setPaymentCompleted(false);
132
- setLockPayParams(false);
133
- paymentState.resetOrder();
134
- }
135
- trpc.nav.mutate({
136
- action: open2 ? "navOpenPay" : "navClosePay",
137
- orderId: pay.order?.id?.toString(),
138
- data: meta ?? {}
139
- });
140
- if (open2) onOpenRef.current?.();
141
- else onCloseRef.current?.();
142
- },
143
- // We don't have good caching on paymentState, so don't include it as a dep
144
- // eslint-disable-next-line react-hooks/exhaustive-deps
145
- [trpc, pay.order?.id, modalOptions?.resetOnSuccess, paymentCompleted]
146
- );
147
- const onSuccess = useCallback(() => {
148
- if (modalOptions?.closeOnSuccess) {
149
- setTimeout(() => setOpen(false, { event: "wait-success" }), 1e3);
150
- }
151
- setPaymentCompleted(true);
152
- }, [modalOptions?.closeOnSuccess, setOpen, setPaymentCompleted]);
153
- const setRoute = useCallback(
154
- (route2, data) => {
155
- const action = route2.replace("daimoPay", "");
156
- log(`[SET ROUTE] ${action} ${pay.order?.id} ${debugJson(data ?? {})}`);
157
- trpc.nav.mutate({
158
- action,
159
- orderId: pay.order?.id?.toString(),
160
- data: data ?? {}
161
- });
162
- setRouteState(route2);
163
- },
164
- [trpc, pay.order?.id, log]
165
- );
166
- useEffect(() => setTheme(theme), [theme]);
167
- useEffect(() => setLang(opts.language || "en-US"), [opts.language]);
168
- useEffect(
169
- () => setDisableMobileInjector(opts.disableMobileInjector ?? false),
170
- [opts.disableMobileInjector]
171
- );
172
- useEffect(() => setErrorMessage(null), [route, open]);
173
- const paymentState = usePaymentState({
174
- trpc,
175
- lockPayParams,
176
- setRoute,
177
- log,
178
- redirectReturnUrl
179
- });
180
- const showPayment = async (modalOptions2) => {
181
- const id = pay.order?.id;
182
- log(
183
- `[PAY] showing modal ${debugJson({ id, modalOptions: modalOptions2, paymentFsmState: pay.paymentState })}`
184
- );
185
- setModalOptions(modalOptions2);
186
- setOpen(true);
187
- if (modalOptions2.connectedWalletOnly) {
188
- paymentState.setTokenMode("all");
189
- }
190
- if (pay.paymentState === "error") {
191
- setRoute(ROUTES.ERROR);
192
- } else if (pay.paymentState === "payment_started" || pay.paymentState === "payment_completed" || pay.paymentState === "payment_bounced") {
193
- setRoute(ROUTES.CONFIRMATION);
194
- } else if (modalOptions2.connectedWalletOnly) {
195
- setRoute(ROUTES.SELECT_TOKEN);
196
- } else {
197
- setRoute(ROUTES.SELECT_METHOD);
198
- }
199
- };
200
- const isUnderpaid = pay.order?.mode === DaimoPayOrderMode.HYDRATED && pay.order.sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT && pay.order.sourceTokenAmount != null;
201
- useEffect(() => {
202
- if (pay.paymentState === "error") {
203
- setRoute(ROUTES.ERROR);
204
- } else if (pay.paymentState === "payment_started" || pay.paymentState === "payment_completed" || pay.paymentState === "payment_bounced") {
205
- setRoute(ROUTES.CONFIRMATION, { event: "payment-started" });
206
- } else if (isUnderpaid) {
207
- paymentState.setSelectedDepositAddressOption(void 0);
208
- setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS);
209
- }
210
- }, [pay.paymentState, setRoute, isUnderpaid]);
211
- const value = {
212
- theme: ckTheme,
213
- setTheme,
214
- mode: ckMode,
215
- setMode,
216
- customTheme,
217
- setCustomTheme,
218
- lang: ckLang,
219
- setLang,
220
- disableMobileInjector,
221
- setDisableMobileInjector,
222
- setOnOpen,
223
- setOnClose,
224
- open,
225
- setOpen,
226
- route,
227
- setRoute,
228
- // Daimo Pay context
229
- uniquePaymentMethodPage,
230
- setUniquePaymentMethodPage,
231
- pendingConnectorId,
232
- setPendingConnectorId,
233
- sessionId,
234
- solanaConnector,
235
- setSolanaConnector,
236
- onConnect,
237
- // Other configuration
238
- options: opts,
239
- errorMessage,
240
- onSuccess,
241
- showContactSupport,
242
- setShowContactSupport,
243
- confirmationMessage,
244
- setConfirmationMessage,
245
- redirectReturnUrl,
246
- setRedirectReturnUrl,
247
- debugMode,
248
- log,
249
- displayError: (message, code) => {
250
- setErrorMessage(message);
251
- console.log("---------DAIMOPAY DEBUG---------");
252
- console.log(message);
253
- if (code) console.table(code);
254
- console.log("---------/DAIMOPAY DEBUG---------");
255
- },
256
- resize,
257
- triggerResize: () => onResize((prev) => prev + 1),
258
- // Above: generic ConnectKit context
259
- // Below: Daimo Pay context
260
- showPayment,
261
- paymentState,
262
- trpc
263
- };
264
- return createElement(
265
- PayContext.Provider,
266
- { value },
267
- /* @__PURE__ */ jsx(Web3ContextProvider, { children: /* @__PURE__ */ jsxs(ThemeProvider, { theme: defaultTheme, children: [
268
- children,
269
- /* @__PURE__ */ jsx(
270
- DaimoPayModal,
271
- {
272
- lang: ckLang,
273
- theme: ckTheme,
274
- mode,
275
- customTheme: ckCustomTheme,
276
- disableMobileInjector
277
- }
278
- )
279
- ] }) })
280
- );
281
- };
282
- const DaimoPayProvider = (props) => {
283
- const payApiUrl = props.payApiUrl ?? "https://pay-api.daimo.xyz/";
284
- const log = useMemo(
285
- () => props.debugMode ? (...args) => console.log(...args) : () => {
286
- },
287
- [props.debugMode]
288
- );
289
- return /* @__PURE__ */ jsx(PaymentProvider, { payApiUrl, log, children: /* @__PURE__ */ jsx(SolanaContextProvider, { solanaRpcUrl: props.solanaRpcUrl, children: /* @__PURE__ */ jsx(DaimoPayUIProvider, { ...props, payApiUrl, log }) }) });
290
- };
291
-
292
- export { DaimoPayProvider };
293
- //# sourceMappingURL=DaimoPayProvider.js.map