@daimo/sdk 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/README.md +18 -0
  2. package/dist/client/createDaimoClient.d.ts +16 -4
  3. package/dist/client/createDaimoClient.d.ts.map +1 -1
  4. package/dist/client/createDaimoClient.js +31 -3
  5. package/dist/client/createDaimoClient.js.map +1 -1
  6. package/dist/common/account.d.ts +419 -13
  7. package/dist/common/account.d.ts.map +1 -1
  8. package/dist/common/account.js +278 -0
  9. package/dist/common/account.js.map +1 -1
  10. package/dist/common/api.d.ts +7 -5
  11. package/dist/common/api.d.ts.map +1 -1
  12. package/dist/common/api.js +13 -12
  13. package/dist/common/api.js.map +1 -1
  14. package/dist/common/api.test.d.ts +2 -0
  15. package/dist/common/api.test.d.ts.map +1 -0
  16. package/dist/common/api.test.js +21 -0
  17. package/dist/common/api.test.js.map +1 -0
  18. package/dist/common/constants.d.ts +5 -0
  19. package/dist/common/constants.d.ts.map +1 -0
  20. package/dist/common/constants.js +5 -0
  21. package/dist/common/constants.js.map +1 -0
  22. package/dist/common/frameMessages.d.ts +26 -0
  23. package/dist/common/frameMessages.d.ts.map +1 -0
  24. package/dist/common/frameMessages.js +54 -0
  25. package/dist/common/frameMessages.js.map +1 -0
  26. package/dist/common/frameMessages.test.d.ts +2 -0
  27. package/dist/common/frameMessages.test.d.ts.map +1 -0
  28. package/dist/common/frameMessages.test.js +42 -0
  29. package/dist/common/frameMessages.test.js.map +1 -0
  30. package/dist/common/frameReadiness.d.ts +22 -0
  31. package/dist/common/frameReadiness.d.ts.map +1 -0
  32. package/dist/common/frameReadiness.js +33 -0
  33. package/dist/common/frameReadiness.js.map +1 -0
  34. package/dist/common/frameReadiness.test.d.ts +2 -0
  35. package/dist/common/frameReadiness.test.d.ts.map +1 -0
  36. package/dist/common/frameReadiness.test.js +76 -0
  37. package/dist/common/frameReadiness.test.js.map +1 -0
  38. package/dist/native/DaimoFrameRN.d.ts +72 -0
  39. package/dist/native/DaimoFrameRN.d.ts.map +1 -0
  40. package/dist/native/DaimoFrameRN.js +244 -0
  41. package/dist/native/DaimoFrameRN.js.map +1 -0
  42. package/dist/native/index.d.ts +5 -0
  43. package/dist/native/index.d.ts.map +1 -0
  44. package/dist/native/index.js +10 -0
  45. package/dist/native/index.js.map +1 -0
  46. package/dist/version.d.ts +1 -1
  47. package/dist/version.js +1 -1
  48. package/dist/web/api/index.d.ts +24 -0
  49. package/dist/web/api/index.d.ts.map +1 -1
  50. package/dist/web/api/index.js +6 -1
  51. package/dist/web/api/index.js.map +1 -1
  52. package/dist/web/api/navTree.d.ts +5 -2
  53. package/dist/web/api/navTree.d.ts.map +1 -1
  54. package/dist/web/components/BankLogo.d.ts +8 -0
  55. package/dist/web/components/BankLogo.d.ts.map +1 -0
  56. package/dist/web/components/BankLogo.js +9 -0
  57. package/dist/web/components/BankLogo.js.map +1 -0
  58. package/dist/web/components/ChooseOptionPage.d.ts +2 -1
  59. package/dist/web/components/ChooseOptionPage.d.ts.map +1 -1
  60. package/dist/web/components/ChooseOptionPage.js +7 -4
  61. package/dist/web/components/ChooseOptionPage.js.map +1 -1
  62. package/dist/web/components/ChooseOptionPage.test.d.ts +2 -0
  63. package/dist/web/components/ChooseOptionPage.test.d.ts.map +1 -0
  64. package/dist/web/components/ChooseOptionPage.test.js +29 -0
  65. package/dist/web/components/ChooseOptionPage.test.js.map +1 -0
  66. package/dist/web/components/Countdown.d.ts +4 -1
  67. package/dist/web/components/Countdown.d.ts.map +1 -1
  68. package/dist/web/components/Countdown.js +24 -10
  69. package/dist/web/components/Countdown.js.map +1 -1
  70. package/dist/web/components/Countdown.test.d.ts +2 -0
  71. package/dist/web/components/Countdown.test.d.ts.map +1 -0
  72. package/dist/web/components/Countdown.test.js +16 -0
  73. package/dist/web/components/Countdown.test.js.map +1 -0
  74. package/dist/web/components/DaimoFrame.d.ts +3 -2
  75. package/dist/web/components/DaimoFrame.d.ts.map +1 -1
  76. package/dist/web/components/DaimoFrame.js +36 -18
  77. package/dist/web/components/DaimoFrame.js.map +1 -1
  78. package/dist/web/components/DaimoModal.d.ts +16 -1
  79. package/dist/web/components/DaimoModal.d.ts.map +1 -1
  80. package/dist/web/components/DaimoModal.js +147 -64
  81. package/dist/web/components/DaimoModal.js.map +1 -1
  82. package/dist/web/components/DaimoRampPreview.d.ts +12 -0
  83. package/dist/web/components/DaimoRampPreview.d.ts.map +1 -0
  84. package/dist/web/components/DaimoRampPreview.js +21 -0
  85. package/dist/web/components/DaimoRampPreview.js.map +1 -0
  86. package/dist/web/components/ExchangePage.d.ts.map +1 -1
  87. package/dist/web/components/ExchangePage.js +6 -1
  88. package/dist/web/components/ExchangePage.js.map +1 -1
  89. package/dist/web/components/ExternalPaymentPage.d.ts.map +1 -1
  90. package/dist/web/components/ExternalPaymentPage.js +3 -2
  91. package/dist/web/components/ExternalPaymentPage.js.map +1 -1
  92. package/dist/web/components/ModalChrome.d.ts +9 -12
  93. package/dist/web/components/ModalChrome.d.ts.map +1 -1
  94. package/dist/web/components/ModalChrome.js +40 -41
  95. package/dist/web/components/ModalChrome.js.map +1 -1
  96. package/dist/web/components/account/AccountApplePayPage.d.ts +4 -3
  97. package/dist/web/components/account/AccountApplePayPage.d.ts.map +1 -1
  98. package/dist/web/components/account/AccountApplePayPage.js +85 -50
  99. package/dist/web/components/account/AccountApplePayPage.js.map +1 -1
  100. package/dist/web/components/account/AccountApprovalPage.d.ts +34 -0
  101. package/dist/web/components/account/AccountApprovalPage.d.ts.map +1 -0
  102. package/dist/web/components/account/AccountApprovalPage.js +145 -0
  103. package/dist/web/components/account/AccountApprovalPage.js.map +1 -0
  104. package/dist/web/components/account/AccountBankDetailsPage.d.ts +4 -3
  105. package/dist/web/components/account/AccountBankDetailsPage.d.ts.map +1 -1
  106. package/dist/web/components/account/AccountBankDetailsPage.js +12 -10
  107. package/dist/web/components/account/AccountBankDetailsPage.js.map +1 -1
  108. package/dist/web/components/account/AccountBankPickerPage.d.ts +6 -9
  109. package/dist/web/components/account/AccountBankPickerPage.d.ts.map +1 -1
  110. package/dist/web/components/account/AccountBankPickerPage.js +52 -23
  111. package/dist/web/components/account/AccountBankPickerPage.js.map +1 -1
  112. package/dist/web/components/account/AccountDeeplinkPage.d.ts +3 -1
  113. package/dist/web/components/account/AccountDeeplinkPage.d.ts.map +1 -1
  114. package/dist/web/components/account/AccountDeeplinkPage.js +17 -9
  115. package/dist/web/components/account/AccountDeeplinkPage.js.map +1 -1
  116. package/dist/web/components/account/AccountEmailPage.d.ts +2 -1
  117. package/dist/web/components/account/AccountEmailPage.d.ts.map +1 -1
  118. package/dist/web/components/account/AccountEmailPage.js +2 -2
  119. package/dist/web/components/account/AccountEmailPage.js.map +1 -1
  120. package/dist/web/components/account/AccountEnrollmentPage.d.ts +1 -4
  121. package/dist/web/components/account/AccountEnrollmentPage.d.ts.map +1 -1
  122. package/dist/web/components/account/AccountEnrollmentPage.js +270 -236
  123. package/dist/web/components/account/AccountEnrollmentPage.js.map +1 -1
  124. package/dist/web/components/account/AccountEnrollmentUpdatePage.d.ts.map +1 -1
  125. package/dist/web/components/account/AccountEnrollmentUpdatePage.js +2 -1
  126. package/dist/web/components/account/AccountEnrollmentUpdatePage.js.map +1 -1
  127. package/dist/web/components/account/AccountFlowProvider.d.ts +8 -1
  128. package/dist/web/components/account/AccountFlowProvider.d.ts.map +1 -1
  129. package/dist/web/components/account/AccountFlowProvider.js +38 -3
  130. package/dist/web/components/account/AccountFlowProvider.js.map +1 -1
  131. package/dist/web/components/account/AccountInteracConfirmPage.d.ts +4 -3
  132. package/dist/web/components/account/AccountInteracConfirmPage.d.ts.map +1 -1
  133. package/dist/web/components/account/AccountInteracConfirmPage.js +15 -23
  134. package/dist/web/components/account/AccountInteracConfirmPage.js.map +1 -1
  135. package/dist/web/components/account/AccountOtpCodeEntry.d.ts +2 -1
  136. package/dist/web/components/account/AccountOtpCodeEntry.d.ts.map +1 -1
  137. package/dist/web/components/account/AccountOtpCodeEntry.js +25 -6
  138. package/dist/web/components/account/AccountOtpCodeEntry.js.map +1 -1
  139. package/dist/web/components/account/AccountOtpPage.d.ts +1 -1
  140. package/dist/web/components/account/AccountOtpPage.d.ts.map +1 -1
  141. package/dist/web/components/account/AccountOtpPage.js +4 -2
  142. package/dist/web/components/account/AccountOtpPage.js.map +1 -1
  143. package/dist/web/components/account/AccountPaymentPage.d.ts +3 -2
  144. package/dist/web/components/account/AccountPaymentPage.d.ts.map +1 -1
  145. package/dist/web/components/account/AccountPaymentPage.js +10 -5
  146. package/dist/web/components/account/AccountPaymentPage.js.map +1 -1
  147. package/dist/web/components/account/AccountPaymentResumePage.d.ts +8 -0
  148. package/dist/web/components/account/AccountPaymentResumePage.d.ts.map +1 -0
  149. package/dist/web/components/account/AccountPaymentResumePage.js +42 -0
  150. package/dist/web/components/account/AccountPaymentResumePage.js.map +1 -0
  151. package/dist/web/components/account/AccountPhoneOtpPage.d.ts +1 -3
  152. package/dist/web/components/account/AccountPhoneOtpPage.d.ts.map +1 -1
  153. package/dist/web/components/account/AccountPhoneOtpPage.js +3 -40
  154. package/dist/web/components/account/AccountPhoneOtpPage.js.map +1 -1
  155. package/dist/web/components/account/AccountPhonePage.d.ts +1 -2
  156. package/dist/web/components/account/AccountPhonePage.d.ts.map +1 -1
  157. package/dist/web/components/account/AccountPhonePage.js +1 -2
  158. package/dist/web/components/account/AccountPhonePage.js.map +1 -1
  159. package/dist/web/components/account/AccountRequestToPayPage.d.ts +28 -0
  160. package/dist/web/components/account/AccountRequestToPayPage.d.ts.map +1 -0
  161. package/dist/web/components/account/AccountRequestToPayPage.js +79 -0
  162. package/dist/web/components/account/AccountRequestToPayPage.js.map +1 -0
  163. package/dist/web/components/account/AccountStatusPage.d.ts +4 -1
  164. package/dist/web/components/account/AccountStatusPage.d.ts.map +1 -1
  165. package/dist/web/components/account/AccountStatusPage.js +2 -2
  166. package/dist/web/components/account/AccountStatusPage.js.map +1 -1
  167. package/dist/web/components/account/PaginatedEnrollmentForm.d.ts +4 -1
  168. package/dist/web/components/account/PaginatedEnrollmentForm.d.ts.map +1 -1
  169. package/dist/web/components/account/PaginatedEnrollmentForm.js +74 -8
  170. package/dist/web/components/account/PaginatedEnrollmentForm.js.map +1 -1
  171. package/dist/web/components/account/PaginatedEnrollmentForm.test.d.ts +2 -0
  172. package/dist/web/components/account/PaginatedEnrollmentForm.test.d.ts.map +1 -0
  173. package/dist/web/components/account/PaginatedEnrollmentForm.test.js +67 -0
  174. package/dist/web/components/account/PaginatedEnrollmentForm.test.js.map +1 -0
  175. package/dist/web/components/account/accountNav.d.ts +19 -9
  176. package/dist/web/components/account/accountNav.d.ts.map +1 -1
  177. package/dist/web/components/account/accountNav.js +76 -32
  178. package/dist/web/components/account/accountNav.js.map +1 -1
  179. package/dist/web/components/account/accountNav.test.js +180 -15
  180. package/dist/web/components/account/accountNav.test.js.map +1 -1
  181. package/dist/web/components/account/accountPaymentCompatibility.d.ts +40 -0
  182. package/dist/web/components/account/accountPaymentCompatibility.d.ts.map +1 -0
  183. package/dist/web/components/account/accountPaymentCompatibility.js +319 -0
  184. package/dist/web/components/account/accountPaymentCompatibility.js.map +1 -0
  185. package/dist/web/components/account/accountSessionRecreate.d.ts +15 -0
  186. package/dist/web/components/account/accountSessionRecreate.d.ts.map +1 -0
  187. package/dist/web/components/account/accountSessionRecreate.js +24 -0
  188. package/dist/web/components/account/accountSessionRecreate.js.map +1 -0
  189. package/dist/web/components/account/accountSessionRecreate.test.d.ts +2 -0
  190. package/dist/web/components/account/accountSessionRecreate.test.d.ts.map +1 -0
  191. package/dist/web/components/account/accountSessionRecreate.test.js +75 -0
  192. package/dist/web/components/account/accountSessionRecreate.test.js.map +1 -0
  193. package/dist/web/components/account/approvalInteractions.test.d.ts +2 -0
  194. package/dist/web/components/account/approvalInteractions.test.d.ts.map +1 -0
  195. package/dist/web/components/account/approvalInteractions.test.js +209 -0
  196. package/dist/web/components/account/approvalInteractions.test.js.map +1 -0
  197. package/dist/web/components/account/enrollmentProtocol.d.ts +76 -0
  198. package/dist/web/components/account/enrollmentProtocol.d.ts.map +1 -0
  199. package/dist/web/components/account/enrollmentProtocol.js +323 -0
  200. package/dist/web/components/account/enrollmentProtocol.js.map +1 -0
  201. package/dist/web/components/account/enrollmentProtocol.test.d.ts +2 -0
  202. package/dist/web/components/account/enrollmentProtocol.test.d.ts.map +1 -0
  203. package/dist/web/components/account/enrollmentProtocol.test.js +544 -0
  204. package/dist/web/components/account/enrollmentProtocol.test.js.map +1 -0
  205. package/dist/web/components/account/fiatPopup.d.ts +7 -2
  206. package/dist/web/components/account/fiatPopup.d.ts.map +1 -1
  207. package/dist/web/components/account/fiatPopup.js +16 -6
  208. package/dist/web/components/account/fiatPopup.js.map +1 -1
  209. package/dist/web/components/account/fiatPopup.test.js +8 -6
  210. package/dist/web/components/account/fiatPopup.test.js.map +1 -1
  211. package/dist/web/components/account/formSchemas.d.ts +6 -6
  212. package/dist/web/components/account/requestToPay.test.d.ts +2 -0
  213. package/dist/web/components/account/requestToPay.test.d.ts.map +1 -0
  214. package/dist/web/components/account/requestToPay.test.js +117 -0
  215. package/dist/web/components/account/requestToPay.test.js.map +1 -0
  216. package/dist/web/components/account/walletPayDetails.d.ts +8 -0
  217. package/dist/web/components/account/walletPayDetails.d.ts.map +1 -0
  218. package/dist/web/components/account/walletPayDetails.js +46 -0
  219. package/dist/web/components/account/walletPayDetails.js.map +1 -0
  220. package/dist/web/components/account/walletPayDetails.test.d.ts +2 -0
  221. package/dist/web/components/account/walletPayDetails.test.d.ts.map +1 -0
  222. package/dist/web/components/account/walletPayDetails.test.js +87 -0
  223. package/dist/web/components/account/walletPayDetails.test.js.map +1 -0
  224. package/dist/web/components/account/walletPayName.d.ts +8 -0
  225. package/dist/web/components/account/walletPayName.d.ts.map +1 -0
  226. package/dist/web/components/account/walletPayName.js +12 -0
  227. package/dist/web/components/account/walletPayName.js.map +1 -0
  228. package/dist/web/components/account/walletPayName.test.d.ts +2 -0
  229. package/dist/web/components/account/walletPayName.test.d.ts.map +1 -0
  230. package/dist/web/components/account/walletPayName.test.js +15 -0
  231. package/dist/web/components/account/walletPayName.test.js.map +1 -0
  232. package/dist/web/components/frameMessages.d.ts +2 -28
  233. package/dist/web/components/frameMessages.d.ts.map +1 -1
  234. package/dist/web/components/frameMessages.js +4 -61
  235. package/dist/web/components/frameMessages.js.map +1 -1
  236. package/dist/web/components/shared.d.ts.map +1 -1
  237. package/dist/web/components/shared.js +7 -2
  238. package/dist/web/components/shared.js.map +1 -1
  239. package/dist/web/hooks/accountAuthNav.d.ts.map +1 -1
  240. package/dist/web/hooks/accountAuthNav.js +1 -6
  241. package/dist/web/hooks/accountAuthNav.js.map +1 -1
  242. package/dist/web/hooks/accountAuthNav.test.js +9 -15
  243. package/dist/web/hooks/accountAuthNav.test.js.map +1 -1
  244. package/dist/web/hooks/formatUserError.d.ts.map +1 -1
  245. package/dist/web/hooks/formatUserError.js +10 -0
  246. package/dist/web/hooks/formatUserError.js.map +1 -1
  247. package/dist/web/hooks/formatUserError.test.d.ts +2 -0
  248. package/dist/web/hooks/formatUserError.test.d.ts.map +1 -0
  249. package/dist/web/hooks/formatUserError.test.js +36 -0
  250. package/dist/web/hooks/formatUserError.test.js.map +1 -0
  251. package/dist/web/hooks/locales/en.d.ts +8 -2
  252. package/dist/web/hooks/locales/en.d.ts.map +1 -1
  253. package/dist/web/hooks/locales/en.js +13 -7
  254. package/dist/web/hooks/locales/en.js.map +1 -1
  255. package/dist/web/hooks/locales/es.d.ts.map +1 -1
  256. package/dist/web/hooks/locales/es.js +13 -7
  257. package/dist/web/hooks/locales/es.js.map +1 -1
  258. package/dist/web/hooks/locales/ja.d.ts.map +1 -1
  259. package/dist/web/hooks/locales/ja.js +13 -7
  260. package/dist/web/hooks/locales/ja.js.map +1 -1
  261. package/dist/web/hooks/locales/ko.d.ts.map +1 -1
  262. package/dist/web/hooks/locales/ko.js +13 -7
  263. package/dist/web/hooks/locales/ko.js.map +1 -1
  264. package/dist/web/hooks/locales/pt.d.ts.map +1 -1
  265. package/dist/web/hooks/locales/pt.js +13 -7
  266. package/dist/web/hooks/locales/pt.js.map +1 -1
  267. package/dist/web/hooks/locales/zh.d.ts.map +1 -1
  268. package/dist/web/hooks/locales/zh.js +13 -7
  269. package/dist/web/hooks/locales/zh.js.map +1 -1
  270. package/dist/web/hooks/types.d.ts +16 -8
  271. package/dist/web/hooks/types.d.ts.map +1 -1
  272. package/dist/web/hooks/types.js.map +1 -1
  273. package/dist/web/hooks/useAccountFlow.d.ts +3 -9
  274. package/dist/web/hooks/useAccountFlow.d.ts.map +1 -1
  275. package/dist/web/hooks/useAccountFlow.js +0 -12
  276. package/dist/web/hooks/useAccountFlow.js.map +1 -1
  277. package/dist/web/hooks/useDepositPoller.js +1 -1
  278. package/dist/web/hooks/useDepositPoller.js.map +1 -1
  279. package/dist/web/hooks/useDraftDeposit.d.ts +3 -2
  280. package/dist/web/hooks/useDraftDeposit.d.ts.map +1 -1
  281. package/dist/web/hooks/useDraftDeposit.js +12 -5
  282. package/dist/web/hooks/useDraftDeposit.js.map +1 -1
  283. package/dist/web/hooks/useRequestToPayDeposit.d.ts +26 -0
  284. package/dist/web/hooks/useRequestToPayDeposit.d.ts.map +1 -0
  285. package/dist/web/hooks/useRequestToPayDeposit.js +81 -0
  286. package/dist/web/hooks/useRequestToPayDeposit.js.map +1 -0
  287. package/dist/web/hooks/useSessionNav.d.ts +11 -2
  288. package/dist/web/hooks/useSessionNav.d.ts.map +1 -1
  289. package/dist/web/hooks/useSessionNav.js +199 -36
  290. package/dist/web/hooks/useSessionNav.js.map +1 -1
  291. package/dist/web/index.d.ts +2 -0
  292. package/dist/web/index.d.ts.map +1 -1
  293. package/dist/web/index.js +1 -0
  294. package/dist/web/index.js.map +1 -1
  295. package/dist/web/styles.css +1 -1
  296. package/dist/web/theme.css +1 -1
  297. package/dist/web/theme.d.ts.map +1 -1
  298. package/dist/web/theme.js +3 -1
  299. package/dist/web/theme.js.map +1 -1
  300. package/package.json +18 -4
@@ -1,7 +1,8 @@
1
1
  import { useEffect, useRef, useState } from "react";
2
2
  import { useSessionDepositState, } from "./useAccountFlow.js";
3
3
  import { formatUserError } from "./formatUserError.js";
4
- import { t } from "./locale.js";
4
+ import { getLocale, t } from "./locale.js";
5
+ import { getAuthorizedRoutingAmount, isExpiredRequestToPay, } from "../components/account/accountPaymentCompatibility.js";
5
6
  /**
6
7
  * Debounced draft-deposit upsert. Fires `upsertDeposit` each time the amount
7
8
  * settles, stores the result on the session deposit state. Used by every
@@ -115,7 +116,7 @@ export function useDraftDeposit({ client, accountFlow, sessionId, rail, depositA
115
116
  },
116
117
  };
117
118
  }
118
- export async function signAndUpsertDeposit({ client, accountFlow, sessionId, depositAmount, authorizedAmount, rail, }) {
119
+ export async function signAndUpsertDeposit({ client, accountFlow, sessionId, depositAmount, authorizedAmount, paymentInput, rail, }) {
119
120
  const token = await accountFlow.getAccessToken();
120
121
  if (!token)
121
122
  throw new Error("not authenticated");
@@ -132,10 +133,12 @@ export async function signAndUpsertDeposit({ client, accountFlow, sessionId, dep
132
133
  sessionId,
133
134
  rail,
134
135
  depositAmount,
136
+ locale: getLocale(),
135
137
  deliverySig,
136
138
  deliverySigData: deliverySignData,
137
139
  routingSig,
138
140
  routingSigData: routingSignData,
141
+ paymentInput,
139
142
  }, auth);
140
143
  }
141
144
  /** Sign + upsert a deposit and require payment info (bank rails). */
@@ -153,6 +156,7 @@ async function upsertPlainDraftDeposit({ client, accountFlow, sessionId, rail, d
153
156
  sessionId,
154
157
  rail,
155
158
  depositAmount,
159
+ locale: getLocale(),
156
160
  }, { bearerToken: token });
157
161
  }
158
162
  async function createSignedDraftDeposit({ client, accountFlow, sessionId, rail, depositAmount, }) {
@@ -165,9 +169,12 @@ async function createSignedDraftDeposit({ client, accountFlow, sessionId, rail,
165
169
  });
166
170
  if (preview.payment === null)
167
171
  return preview;
168
- const signedAmount = preview.payment.flow === "wallet-pay-widget"
169
- ? preview.payment.purchaseAmount
170
- : depositAmount;
172
+ if (preview.payment.flow === "institution-picker")
173
+ return preview;
174
+ if (isExpiredRequestToPay(preview.payment)) {
175
+ return preview;
176
+ }
177
+ const signedAmount = getAuthorizedRoutingAmount(preview.payment, depositAmount);
171
178
  return signAndUpsertDeposit({
172
179
  client,
173
180
  accountFlow,
@@ -1 +1 @@
1
- {"version":3,"file":"useDraftDeposit.js","sourceRoot":"","sources":["../../../src/web/hooks/useDraftDeposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASpD,OAAO,EAEL,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAoBhC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,WAAW,EACX,SAAS,EACT,IAAI,EACJ,aAAa,EACb,OAAO,EACP,SAAS,GACW;IACpB,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAM,aAAa,GACjB,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC,aAAa,KAAK,aAAa,CAAC;IACvE,MAAM,uBAAuB,GAC3B,aAAa,IAAI,YAAY,EAAE,IAAI,KAAK,SAAS,CAAC;IACpD,MAAM,UAAU,GAAG,aAAa,IAAI,YAAY,EAAE,IAAI,KAAK,UAAU,CAAC;IACtE,MAAM,OAAO,GACX,aAAa,IAAI,YAAY,EAAE,IAAI,KAAK,SAAS;QAC/C,CAAC,CAAC,YAAY,CAAC,OAAO;QACtB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,gBAAgB,GACpB,aAAa,IAAI,YAAY,EAAE,IAAI,KAAK,SAAS;QAC/C,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC;IAEX,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,IAAI,uBAAuB,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,aAAa,IAAI,YAAY,EAAE,IAAI,KAAK,MAAM;YAAE,OAAO;QAC3D,wEAAwE;QACxE,wEAAwE;QACxE,4CAA4C;QAC5C,IAAI,aAAa,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3C,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACrC,MAAM,GAAG,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC;YACpC,eAAe,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAErD,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,MAAM,GACV,SAAS,KAAK,QAAQ;wBACpB,CAAC,CAAC,MAAM,wBAAwB,CAAC;4BAC7B,MAAM;4BACN,WAAW;4BACX,SAAS;4BACT,IAAI;4BACJ,aAAa;yBACd,CAAC;wBACJ,CAAC,CAAC,MAAM,uBAAuB,CAAC;4BAC5B,MAAM;4BACN,WAAW;4BACX,SAAS;4BACT,IAAI;4BACJ,aAAa;yBACd,CAAC,CAAC;oBACT,IAAI,GAAG,KAAK,aAAa,CAAC,OAAO;wBAAE,OAAO;oBAC1C,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;wBAC5B,eAAe,CAAC;4BACd,aAAa;4BACb,IAAI,EAAE,SAAS;4BACf,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;4BAC5B,OAAO,EAAE,IAAI;4BACb,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;yBAC1C,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,eAAe,CAAC;wBACd,aAAa;wBACb,IAAI,EAAE,SAAS;wBACf,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;wBAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;qBACxB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,KAAK,aAAa,CAAC,OAAO;wBAAE,OAAO;oBAC1C,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE;wBACzD,SAAS;wBACT,IAAI;wBACJ,aAAa;wBACb,SAAS;wBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACxD,CAAC,CAAC;oBACH,eAAe,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBACjD,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,EAAE;QACD,WAAW;QACX,MAAM;QACN,aAAa;QACb,YAAY;QACZ,OAAO;QACP,KAAK;QACL,uBAAuB;QACvB,aAAa;QACb,IAAI;QACJ,SAAS;QACT,eAAe;QACf,SAAS;KACV,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,gBAAgB;QAChB,UAAU;QACV,KAAK;QACL,KAAK,EAAE,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,eAAe,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,MAAM,EACN,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,IAAI,GACqB;IACzB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,gBAAgB,IAAI,aAAa,CAAC;IACvD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GACzC,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,CACjC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,EAChD,IAAI,CACL,CAAC;IACJ,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;QACjD,GAAG,eAAe;KACnB,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;QAClD,GAAG,gBAAgB;KACpB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CACjC;QACE,SAAS;QACT,IAAI;QACJ,aAAa;QACb,WAAW;QACX,eAAe,EAAE,gBAAgB;QACjC,UAAU;QACV,cAAc,EAAE,eAAe;KAChC,EACD,IAAI,CACL,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACrE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,EACrC,MAAM,EACN,WAAW,EACX,SAAS,EACT,IAAI,EACJ,aAAa,GACY;IACzB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CACjC;QACE,SAAS;QACT,IAAI;QACJ,aAAa;KACd,EACD,EAAE,WAAW,EAAE,KAAK,EAAE,CACvB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,EACtC,MAAM,EACN,WAAW,EACX,SAAS,EACT,IAAI,EACJ,aAAa,GACY;IACzB,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC;QAC5C,MAAM;QACN,WAAW;QACX,SAAS;QACT,IAAI;QACJ,aAAa;KACd,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAC7C,MAAM,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,mBAAmB;QAC1C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc;QAChC,CAAC,CAAC,aAAa,CAAC;IACpB,OAAO,oBAAoB,CAAC;QAC1B,MAAM;QACN,WAAW;QACX,SAAS;QACT,IAAI;QACJ,aAAa;QACb,gBAAgB,EAAE,YAAY;KAC/B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"useDraftDeposit.js","sourceRoot":"","sources":["../../../src/web/hooks/useDraftDeposit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { AccountDeposit, AccountRail } from "../../common/account.js";
2
+ /** Create/replay, promote, and poll one request-to-pay deposit. */
3
+ export declare function useRequestToPayDeposit({ sessionId, clientSecret, rail, resumePayment, onAdvance, }: {
4
+ sessionId: string;
5
+ clientSecret: string;
6
+ rail: AccountRail;
7
+ resumePayment: boolean;
8
+ onAdvance: (deposit: AccountDeposit) => void;
9
+ }): {
10
+ depositAmount: string;
11
+ payment: (import("../../common/account.js").DepositConstraints & {
12
+ flow: Extract<import("../../common/account.js").DepositPaymentInteraction, "request-to-pay">;
13
+ ui: import("../../common/account.js").DepositRequestToPayUi;
14
+ instructions: string;
15
+ payableAmount: string;
16
+ paymentCode: string;
17
+ expiresAt: number;
18
+ expectedSettlementAmount: string;
19
+ retry: import("../../common/account.js").DepositRequestToPayRetry;
20
+ }) | null;
21
+ providerExpired: boolean;
22
+ contractMismatch: boolean;
23
+ error: string | null;
24
+ retry: () => void;
25
+ };
26
+ //# sourceMappingURL=useRequestToPayDeposit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRequestToPayDeposit.d.ts","sourceRoot":"","sources":["../../../src/web/hooks/useRequestToPayDeposit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAOjC,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,aAAa,EACb,SAAS,GACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9C;;;;;;;;;;;;;;;;EAqFA"}
@@ -0,0 +1,81 @@
1
+ import { useEffect, useState } from "react";
2
+ import { getRequestToPayContract } from "../components/account/accountPaymentCompatibility.js";
3
+ import { useDaimoClient } from "./DaimoClientContext.js";
4
+ import { useDepositPoller } from "./useDepositPoller.js";
5
+ import { useDraftDeposit } from "./useDraftDeposit.js";
6
+ import { useAccountFlow, useSessionDepositState } from "./useAccountFlow.js";
7
+ /** Create/replay, promote, and poll one request-to-pay deposit. */
8
+ export function useRequestToPayDeposit({ sessionId, clientSecret, rail, resumePayment, onAdvance, }) {
9
+ const client = useDaimoClient();
10
+ const accountFlow = useAccountFlow();
11
+ const { depositState, setDepositState, clearDepositState } = useSessionDepositState(sessionId);
12
+ const depositAmount = depositState?.depositAmount ?? "";
13
+ const [providerExpired, setProviderExpired] = useState(false);
14
+ const { payment: draftedPayment, error, retry, } = useDraftDeposit({
15
+ client,
16
+ accountFlow,
17
+ sessionId,
18
+ rail,
19
+ depositAmount,
20
+ enabled: depositAmount !== "",
21
+ draftMode: resumePayment ? "plain" : "signed",
22
+ });
23
+ const startedPayment = depositState?.kind === "started"
24
+ ? getRequestToPayContract(depositState.payment)
25
+ : null;
26
+ const payment = startedPayment ??
27
+ (draftedPayment ? getRequestToPayContract(draftedPayment) : null);
28
+ const candidatePayment = depositState?.kind === "started"
29
+ ? depositState.payment
30
+ : draftedPayment;
31
+ const contractMismatch = candidatePayment != null && payment == null;
32
+ const currentDepositId = depositState?.kind === "drafted" || depositState?.kind === "started"
33
+ ? depositState.depositId
34
+ : null;
35
+ useEffect(() => {
36
+ if (!payment || !depositAmount || !currentDepositId)
37
+ return;
38
+ if (depositState?.kind === "started")
39
+ return;
40
+ setDepositState({
41
+ depositAmount,
42
+ kind: "started",
43
+ depositId: currentDepositId,
44
+ payment,
45
+ });
46
+ }, [
47
+ currentDepositId,
48
+ depositAmount,
49
+ depositState?.kind,
50
+ payment,
51
+ setDepositState,
52
+ ]);
53
+ useDepositPoller({
54
+ client,
55
+ sessionId,
56
+ clientSecret,
57
+ onUpdate(deposit) {
58
+ if (deposit.status === "expired") {
59
+ setProviderExpired(true);
60
+ return;
61
+ }
62
+ if (deposit.status !== "initiated" &&
63
+ deposit.status !== "awaiting_payment") {
64
+ clearDepositState();
65
+ onAdvance(deposit);
66
+ }
67
+ },
68
+ shouldStop: (deposit) => deposit.status === "expired" ||
69
+ deposit.status === "failed" ||
70
+ deposit.status === "completed",
71
+ });
72
+ return {
73
+ depositAmount,
74
+ payment,
75
+ providerExpired,
76
+ contractMismatch,
77
+ error,
78
+ retry,
79
+ };
80
+ }
81
+ //# sourceMappingURL=useRequestToPayDeposit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRequestToPayDeposit.js","sourceRoot":"","sources":["../../../src/web/hooks/useRequestToPayDeposit.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { AccountAuthConfig } from "../api/index.js";
1
+ import type { AccountDepositStatus } from "../../common/account.js";
2
+ import type { AccountAuthConfig, DaimoCountryCode, RecreateSessionWithNavResponse } from "../api/index.js";
2
3
  import type { SessionWithNav } from "../api/navTree.js";
3
4
  import type { WalletPaymentOption } from "../api/walletTypes.js";
4
5
  import { type DaimoPlatform } from "../platform.js";
@@ -20,16 +21,20 @@ type SessionNavResult = {
20
21
  autoNav?: boolean;
21
22
  }) => void;
22
23
  handleBack: () => void;
24
+ handleReset: () => void;
23
25
  handleAmountContinue: (amountUsd: number) => void;
24
26
  handleRetry: () => void;
25
27
  handleRefresh: () => Promise<void>;
28
+ handleAccountSessionRecreate: (depositAmount: string) => Promise<void>;
26
29
  handleInjectedWalletSelect: (wallet: InjectedWallet) => void;
27
30
  handleChainSelect: (chain: "evm" | "solana") => void;
28
31
  handleWalletSelectToken: (token: WalletPaymentOption) => void;
29
32
  handleWalletSending: (token: WalletPaymentOption, amountUsd: number) => void;
30
33
  handleShowMobileWallets: (nodeId: string) => void;
31
34
  /** Advance account flow to the next screen. */
32
- handleAccountAdvance: (nextType: AccountNavEntry["type"]) => void;
35
+ handleAccountAdvance: (nextType: AccountNavEntry["type"], options?: {
36
+ initialStatus?: AccountDepositStatus;
37
+ }) => void;
33
38
  /** Reset the current account rail after logout. */
34
39
  handleAccountLogout: () => void;
35
40
  };
@@ -38,6 +43,10 @@ export declare function useSessionNav(session: SessionWithNav, setSession: React
38
43
  enableFiatPopup?: boolean;
39
44
  /** Node to auto-navigate to on load (popup deep-link). */
40
45
  startNodeId?: string;
46
+ /** Selected country used when rebuilding nav for a recreated session. */
47
+ countryCode?: DaimoCountryCode;
48
+ /** Propagates non-session fields from the recreate response. */
49
+ onRecreate?: (response: RecreateSessionWithNavResponse) => void;
41
50
  }): SessionNavResult;
42
51
  export {};
43
52
  //# sourceMappingURL=useSessionNav.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSessionNav.d.ts","sourceRoot":"","sources":["../../../src/web/hooks/useSessionNav.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAQV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAM/E,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAY,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC;AAW3E,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,WAAW,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IAEnB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,0BAA0B,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7D,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;IACrD,uBAAuB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC9D,mBAAmB,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7E,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAElD,+CAA+C;IAC/C,oBAAoB,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAClE,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AA0DF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAChE,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,iBAAiB,GAAG,IAAI,EACrC,QAAQ,CAAC,EAAE,aAAa,EACxB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,EACrC,OAAO,CAAC,EAAE;IACR,qDAAqD;IACrD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,gBAAgB,CA88BlB"}
1
+ {"version":3,"file":"useSessionNav.d.ts","sourceRoot":"","sources":["../../../src/web/hooks/useSessionNav.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from "react";
2
- import { getAccountPaymentEntryTarget } from "../components/account/accountNav.js";
2
+ import { getAccountPaymentEntryTarget, getDepositResumeTarget, shouldRecoverExpiredPayment, } from "../components/account/accountNav.js";
3
+ import { getNodePaymentInteraction } from "../components/account/accountPaymentCompatibility.js";
4
+ import { recreateAccountPaymentSession, runAccountSessionRecreateOnce, } from "../components/account/accountSessionRecreate.js";
3
5
  import { detectPlatform, isDesktop } from "../platform.js";
4
- import { isFramed, railRequiresPopup } from "../components/account/fiatPopup.js";
6
+ import { interactionRequiresPopup, isFramed, } from "../components/account/fiatPopup.js";
5
7
  import { pruneCompletedAccountAuth } from "./accountAuthNav.js";
6
8
  import { useDaimoClient } from "./DaimoClientContext.js";
7
- import { formatUserError } from "./formatUserError.js";
8
9
  import { t } from "./locale.js";
9
10
  import { createNavLogger } from "./navEvent.js";
10
11
  import { findNode } from "./types.js";
@@ -60,6 +61,11 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
60
61
  return { nodeId, nodeType };
61
62
  }, [topEntry, session.navTree]);
62
63
  const canGoBack = stack.length > 0 && stack.some((e) => !e.autoNav);
64
+ const countryCode = options?.countryCode;
65
+ const onRecreate = options?.onRecreate;
66
+ const accountRecreateRef = useRef(null);
67
+ const recreatedAmountRef = useRef(undefined);
68
+ const autoNavRef = useRef(null);
63
69
  // ─── Async fetchers ─────────────────────────────────────────────────────
64
70
  const fetchTronAddress = useCallback(async (nodeId, amountUsd) => {
65
71
  try {
@@ -238,20 +244,67 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
238
244
  }
239
245
  }, [session.sessionId, session.clientSecret, client]);
240
246
  // ─── Account deposit handler ────────────────────────────────────────────────
241
- const handleAccountNavigate = useCallback(async (nodeId, node, autoNav) => {
247
+ const handleAccountNavigate = useCallback(async (nodeId, node, autoNav, options) => {
242
248
  const rail = node.fiatMethod;
249
+ const paymentInteraction = getNodePaymentInteraction(node);
243
250
  setStack((prev) => [
244
251
  ...prev,
245
- { type: "account-loading", nodeId, rail, autoNav },
252
+ {
253
+ type: "account-loading",
254
+ nodeId,
255
+ rail,
256
+ paymentInteraction,
257
+ autoNav,
258
+ },
246
259
  ]);
247
260
  const replaceLoading = (entry) => {
248
261
  setStack((prev) => replacePendingAccountEntry(prev, nodeId, rail, entry));
249
262
  };
263
+ // Resume: if this session already has a deposit past payment, jump
264
+ // straight to the status screen. getDeposit is auth-free (clientSecret
265
+ // only), so a finished deposit never shows a login screen.
266
+ let existingDeposit = null;
267
+ try {
268
+ const response = await client.account.getDeposit({
269
+ sessionId: session.sessionId,
270
+ clientSecret: session.clientSecret,
271
+ refresh: true,
272
+ });
273
+ existingDeposit = response.deposit;
274
+ const resumeType = existingDeposit &&
275
+ getDepositResumeTarget(existingDeposit.status, paymentInteraction);
276
+ if (existingDeposit && resumeType) {
277
+ replaceLoading({
278
+ type: resumeType,
279
+ nodeId,
280
+ rail,
281
+ paymentInteraction,
282
+ autoNav,
283
+ initialStatus: existingDeposit.status,
284
+ });
285
+ return;
286
+ }
287
+ }
288
+ catch (err) {
289
+ console.error("[account-nav] deposit resume check failed:", err);
290
+ // fall through to the normal enrollment/auth flow
291
+ }
292
+ if (options?.popupRequired) {
293
+ replaceLoading({
294
+ type: "fiat-popup",
295
+ nodeId,
296
+ rail,
297
+ paymentInteraction,
298
+ autoNav,
299
+ });
300
+ return;
301
+ }
250
302
  if (!accountFlow) {
251
303
  replaceLoading({
252
304
  type: "account-error",
253
305
  nodeId,
254
306
  rail,
307
+ paymentInteraction,
255
308
  autoNav,
256
309
  message: "account deposit is not available for this session.",
257
310
  });
@@ -276,10 +329,65 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
276
329
  });
277
330
  if (result) {
278
331
  if (result.nextAction === "ready_for_payment") {
332
+ if (existingDeposit &&
333
+ shouldRecoverExpiredPayment(existingDeposit.status, paymentInteraction)) {
334
+ accountFlow.setDepositState(session.sessionId, {
335
+ depositAmount: existingDeposit.fiatAmount,
336
+ kind: "idle",
337
+ });
338
+ replaceLoading({
339
+ type: "account-payment-resume",
340
+ nodeId,
341
+ rail,
342
+ paymentInteraction,
343
+ autoNav,
344
+ });
345
+ return;
346
+ }
347
+ if (existingDeposit &&
348
+ (existingDeposit.status === "initiated" ||
349
+ existingDeposit.status === "awaiting_payment") &&
350
+ (paymentInteraction === "request-to-pay" ||
351
+ paymentInteraction === "institution-picker" ||
352
+ paymentInteraction === "hosted-approval" ||
353
+ paymentInteraction === "external-app-approval")) {
354
+ accountFlow.setDepositState(session.sessionId, {
355
+ depositAmount: existingDeposit.fiatAmount,
356
+ kind: "idle",
357
+ });
358
+ replaceLoading({
359
+ type: "account-payment-resume",
360
+ nodeId,
361
+ rail,
362
+ paymentInteraction,
363
+ autoNav,
364
+ });
365
+ return;
366
+ }
367
+ const recreatedAmount = recreatedAmountRef.current;
368
+ if (recreatedAmount?.sessionId === session.sessionId) {
369
+ recreatedAmountRef.current = undefined;
370
+ if (paymentInteraction === "request-to-pay") {
371
+ replaceLoading({
372
+ type: "account-request-to-pay",
373
+ nodeId,
374
+ rail,
375
+ paymentInteraction,
376
+ autoNav,
377
+ });
378
+ return;
379
+ }
380
+ }
279
381
  // Some rails skip the amount-first step and go straight to a
280
382
  // unified payment page.
281
- const entryType = getAccountPaymentEntryTarget(rail);
282
- replaceLoading({ type: entryType, nodeId, rail, autoNav });
383
+ const entryType = getAccountPaymentEntryTarget(paymentInteraction);
384
+ replaceLoading({
385
+ type: entryType,
386
+ nodeId,
387
+ rail,
388
+ paymentInteraction,
389
+ autoNav,
390
+ });
283
391
  return;
284
392
  }
285
393
  if (result.nextAction === "enrollment") {
@@ -287,6 +395,7 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
287
395
  type: "account-enrollment",
288
396
  nodeId,
289
397
  rail,
398
+ paymentInteraction,
290
399
  autoNav,
291
400
  });
292
401
  return;
@@ -296,6 +405,7 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
296
405
  type: "account-enrollment-update",
297
406
  nodeId,
298
407
  rail,
408
+ paymentInteraction,
299
409
  autoNav,
300
410
  update: result.enrollmentUpdate,
301
411
  });
@@ -308,12 +418,24 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
308
418
  accountFlow.setEmail(accountAuth.email);
309
419
  const sent = await accountFlow.sendOtp(accountAuth.email);
310
420
  if (sent) {
311
- replaceLoading({ type: "account-otp", nodeId, rail, autoNav });
421
+ replaceLoading({
422
+ type: "account-otp",
423
+ nodeId,
424
+ rail,
425
+ paymentInteraction,
426
+ autoNav,
427
+ });
312
428
  return;
313
429
  }
314
430
  }
315
431
  // New user or no email hint — start from email
316
- replaceLoading({ type: "account-email", nodeId, rail, autoNav });
432
+ replaceLoading({
433
+ type: "account-email",
434
+ nodeId,
435
+ rail,
436
+ paymentInteraction,
437
+ autoNav,
438
+ });
317
439
  }, [accountAuth, accountFlow, client, session.clientSecret, session.sessionId]);
318
440
  // ─── Navigation handlers ────────────────────────────────────────────────
319
441
  const handleNavigate = useCallback((nodeId, options) => {
@@ -436,21 +558,10 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
436
558
  return;
437
559
  }
438
560
  if (targetNode.type === "Fiat") {
439
- if (enableFiatPopup &&
440
- railRequiresPopup(targetNode.fiatMethod) &&
441
- isFramed()) {
442
- setStack((prev) => [
443
- ...prev,
444
- {
445
- type: "fiat-popup",
446
- nodeId,
447
- rail: targetNode.fiatMethod,
448
- autoNav,
449
- },
450
- ]);
451
- return;
452
- }
453
- handleAccountNavigate(nodeId, targetNode, autoNav);
561
+ const popupRequired = enableFiatPopup &&
562
+ interactionRequiresPopup(getNodePaymentInteraction(targetNode)) &&
563
+ isFramed();
564
+ handleAccountNavigate(nodeId, targetNode, autoNav, { popupRequired });
454
565
  return;
455
566
  }
456
567
  }, [
@@ -478,7 +589,6 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
478
589
  // jump forward when revisited, creating a loop.
479
590
  if (top.type === "account-creating-wallet" ||
480
591
  top.type === "account-enrollment" ||
481
- top.type === "account-provider-otp" ||
482
592
  top.type === "account-enrollment-update") {
483
593
  next.pop();
484
594
  continue;
@@ -583,7 +693,10 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
583
693
  });
584
694
  return;
585
695
  }
586
- updateWalletTxResult(undefined, formatUserError(err, t.transactionFailed));
696
+ // Store the raw message: the error page formats it for display
697
+ // and passes the raw text on to contact support.
698
+ const raw = err instanceof Error ? err.message : String(err ?? "");
699
+ updateWalletTxResult(undefined, raw || t.transactionFailed);
587
700
  });
588
701
  }, [walletFlow, updateWalletTxResult]);
589
702
  const handleRetry = useCallback(() => {
@@ -672,14 +785,49 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
672
785
  action: "flow_refresh",
673
786
  });
674
787
  try {
675
- const { session: newSession } = await client.internal.sessions.recreate(session.sessionId, session.clientSecret);
788
+ const response = await client.internal.sessions.recreate(session.sessionId, session.clientSecret, { countryCode });
676
789
  setStack([]);
677
- setSession(newSession);
790
+ setSession(response.session);
791
+ onRecreate?.(response);
678
792
  }
679
793
  catch (error) {
680
794
  console.error("failed to recreate session:", error);
681
795
  }
682
- }, [session.sessionId, session.clientSecret, getNodeCtx, setSession, client]);
796
+ }, [
797
+ session.sessionId,
798
+ session.clientSecret,
799
+ countryCode,
800
+ getNodeCtx,
801
+ setSession,
802
+ client,
803
+ onRecreate,
804
+ ]);
805
+ const handleAccountSessionRecreate = useCallback(async (depositAmount) => {
806
+ await runAccountSessionRecreateOnce(accountRecreateRef, async () => {
807
+ const response = await recreateAccountPaymentSession({
808
+ depositAmount,
809
+ recreate: () => client.internal.sessions.recreate(session.sessionId, session.clientSecret, { countryCode }),
810
+ setDepositState: (sessionId, state) => accountFlow?.setDepositState(sessionId, state),
811
+ });
812
+ recreatedAmountRef.current = {
813
+ sessionId: response.session.sessionId,
814
+ depositAmount,
815
+ };
816
+ autoNavRef.current = null;
817
+ setStack([]);
818
+ setSession(response.session);
819
+ onRecreate?.(response);
820
+ });
821
+ }, [
822
+ accountFlow,
823
+ client,
824
+ countryCode,
825
+ onRecreate,
826
+ session.clientSecret,
827
+ session.sessionId,
828
+ setSession,
829
+ ]);
830
+ const handleReset = useCallback(() => setStack([]), []);
683
831
  // ─── Wallet flow handlers ───────────────────────────────────────────────
684
832
  const pendingWalletRef = useRef(null);
685
833
  const handleInjectedWalletSelect = useCallback((wallet) => {
@@ -768,7 +916,6 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
768
916
  }, []);
769
917
  // ─── Internal effects ──────────────────────────────────────────────────
770
918
  // Auto-navigate through single-option ChooseOption chains
771
- const autoNavRef = useRef(null);
772
919
  useLayoutEffect(() => {
773
920
  if (!isOpen)
774
921
  return;
@@ -818,12 +965,15 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
818
965
  }, [topEntry, walletFlow?.wallet, walletFlow?.isConnecting]);
819
966
  // ─── Account flow handler ────────────────────────────────────────────────
820
967
  /** Advance account flow to the next screen, preserving nodeId + rail. */
821
- const handleAccountAdvance = useCallback((nextType) => {
822
- const { nodeId, rail } = accountEntry(topEntry);
968
+ const handleAccountAdvance = useCallback((nextType, options) => {
969
+ const { nodeId, rail, paymentInteraction } = accountEntry(topEntry);
823
970
  const pushPhoneEntry = (type) => {
824
971
  setStack((prev) => {
825
972
  const nextStack = pruneCompletedAccountAuth(prev, type);
826
- return [...nextStack, { type, nodeId, rail }];
973
+ return [
974
+ ...nextStack,
975
+ { type, nodeId, rail, paymentInteraction },
976
+ ];
827
977
  });
828
978
  };
829
979
  if (nextType === "account-phone" &&
@@ -841,14 +991,23 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
841
991
  }
842
992
  setStack((prev) => {
843
993
  const nextStack = pruneCompletedAccountAuth(prev, nextType);
844
- return [...nextStack, { type: nextType, nodeId, rail }];
994
+ return [
995
+ ...nextStack,
996
+ {
997
+ type: nextType,
998
+ nodeId,
999
+ rail,
1000
+ paymentInteraction,
1001
+ ...options,
1002
+ },
1003
+ ];
845
1004
  });
846
1005
  }, [accountAuth, accountFlow, topEntry]);
847
1006
  const handleAccountLogout = useCallback(() => {
848
- const { nodeId, rail, autoNav } = accountEntry(topEntry);
1007
+ const { nodeId, rail, paymentInteraction, autoNav } = accountEntry(topEntry);
849
1008
  setStack((prev) => [
850
1009
  ...prev.filter((entry) => !isSameAccountRailEntry(entry, nodeId, rail)),
851
- { type: "account-email", nodeId, rail, autoNav },
1010
+ { type: "account-email", nodeId, rail, paymentInteraction, autoNav },
852
1011
  ]);
853
1012
  }, [topEntry]);
854
1013
  return useMemo(() => ({
@@ -858,9 +1017,11 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
858
1017
  canGoBack,
859
1018
  handleNavigate,
860
1019
  handleBack,
1020
+ handleReset,
861
1021
  handleAmountContinue,
862
1022
  handleRetry,
863
1023
  handleRefresh,
1024
+ handleAccountSessionRecreate,
864
1025
  handleInjectedWalletSelect,
865
1026
  handleChainSelect,
866
1027
  handleShowMobileWallets,
@@ -875,9 +1036,11 @@ export function useSessionNav(session, setSession, isOpen, accountAuth, platform
875
1036
  canGoBack,
876
1037
  handleNavigate,
877
1038
  handleBack,
1039
+ handleReset,
878
1040
  handleAmountContinue,
879
1041
  handleRetry,
880
1042
  handleRefresh,
1043
+ handleAccountSessionRecreate,
881
1044
  handleInjectedWalletSelect,
882
1045
  handleChainSelect,
883
1046
  handleShowMobileWallets,