@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.
- package/README.md +18 -0
- package/dist/client/createDaimoClient.d.ts +16 -4
- package/dist/client/createDaimoClient.d.ts.map +1 -1
- package/dist/client/createDaimoClient.js +31 -3
- package/dist/client/createDaimoClient.js.map +1 -1
- package/dist/common/account.d.ts +419 -13
- package/dist/common/account.d.ts.map +1 -1
- package/dist/common/account.js +278 -0
- package/dist/common/account.js.map +1 -1
- package/dist/common/api.d.ts +7 -5
- package/dist/common/api.d.ts.map +1 -1
- package/dist/common/api.js +13 -12
- package/dist/common/api.js.map +1 -1
- package/dist/common/api.test.d.ts +2 -0
- package/dist/common/api.test.d.ts.map +1 -0
- package/dist/common/api.test.js +21 -0
- package/dist/common/api.test.js.map +1 -0
- package/dist/common/constants.d.ts +5 -0
- package/dist/common/constants.d.ts.map +1 -0
- package/dist/common/constants.js +5 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/frameMessages.d.ts +26 -0
- package/dist/common/frameMessages.d.ts.map +1 -0
- package/dist/common/frameMessages.js +54 -0
- package/dist/common/frameMessages.js.map +1 -0
- package/dist/common/frameMessages.test.d.ts +2 -0
- package/dist/common/frameMessages.test.d.ts.map +1 -0
- package/dist/common/frameMessages.test.js +42 -0
- package/dist/common/frameMessages.test.js.map +1 -0
- package/dist/common/frameReadiness.d.ts +22 -0
- package/dist/common/frameReadiness.d.ts.map +1 -0
- package/dist/common/frameReadiness.js +33 -0
- package/dist/common/frameReadiness.js.map +1 -0
- package/dist/common/frameReadiness.test.d.ts +2 -0
- package/dist/common/frameReadiness.test.d.ts.map +1 -0
- package/dist/common/frameReadiness.test.js +76 -0
- package/dist/common/frameReadiness.test.js.map +1 -0
- package/dist/native/DaimoFrameRN.d.ts +72 -0
- package/dist/native/DaimoFrameRN.d.ts.map +1 -0
- package/dist/native/DaimoFrameRN.js +244 -0
- package/dist/native/DaimoFrameRN.js.map +1 -0
- package/dist/native/index.d.ts +5 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +10 -0
- package/dist/native/index.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web/api/index.d.ts +24 -0
- package/dist/web/api/index.d.ts.map +1 -1
- package/dist/web/api/index.js +6 -1
- package/dist/web/api/index.js.map +1 -1
- package/dist/web/api/navTree.d.ts +5 -2
- package/dist/web/api/navTree.d.ts.map +1 -1
- package/dist/web/components/BankLogo.d.ts +8 -0
- package/dist/web/components/BankLogo.d.ts.map +1 -0
- package/dist/web/components/BankLogo.js +9 -0
- package/dist/web/components/BankLogo.js.map +1 -0
- package/dist/web/components/ChooseOptionPage.d.ts +2 -1
- package/dist/web/components/ChooseOptionPage.d.ts.map +1 -1
- package/dist/web/components/ChooseOptionPage.js +7 -4
- package/dist/web/components/ChooseOptionPage.js.map +1 -1
- package/dist/web/components/ChooseOptionPage.test.d.ts +2 -0
- package/dist/web/components/ChooseOptionPage.test.d.ts.map +1 -0
- package/dist/web/components/ChooseOptionPage.test.js +29 -0
- package/dist/web/components/ChooseOptionPage.test.js.map +1 -0
- package/dist/web/components/Countdown.d.ts +4 -1
- package/dist/web/components/Countdown.d.ts.map +1 -1
- package/dist/web/components/Countdown.js +24 -10
- package/dist/web/components/Countdown.js.map +1 -1
- package/dist/web/components/Countdown.test.d.ts +2 -0
- package/dist/web/components/Countdown.test.d.ts.map +1 -0
- package/dist/web/components/Countdown.test.js +16 -0
- package/dist/web/components/Countdown.test.js.map +1 -0
- package/dist/web/components/DaimoFrame.d.ts +3 -2
- package/dist/web/components/DaimoFrame.d.ts.map +1 -1
- package/dist/web/components/DaimoFrame.js +36 -18
- package/dist/web/components/DaimoFrame.js.map +1 -1
- package/dist/web/components/DaimoModal.d.ts +16 -1
- package/dist/web/components/DaimoModal.d.ts.map +1 -1
- package/dist/web/components/DaimoModal.js +147 -64
- package/dist/web/components/DaimoModal.js.map +1 -1
- package/dist/web/components/DaimoRampPreview.d.ts +12 -0
- package/dist/web/components/DaimoRampPreview.d.ts.map +1 -0
- package/dist/web/components/DaimoRampPreview.js +21 -0
- package/dist/web/components/DaimoRampPreview.js.map +1 -0
- package/dist/web/components/ExchangePage.d.ts.map +1 -1
- package/dist/web/components/ExchangePage.js +6 -1
- package/dist/web/components/ExchangePage.js.map +1 -1
- package/dist/web/components/ExternalPaymentPage.d.ts.map +1 -1
- package/dist/web/components/ExternalPaymentPage.js +3 -2
- package/dist/web/components/ExternalPaymentPage.js.map +1 -1
- package/dist/web/components/ModalChrome.d.ts +9 -12
- package/dist/web/components/ModalChrome.d.ts.map +1 -1
- package/dist/web/components/ModalChrome.js +40 -41
- package/dist/web/components/ModalChrome.js.map +1 -1
- package/dist/web/components/account/AccountApplePayPage.d.ts +4 -3
- package/dist/web/components/account/AccountApplePayPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountApplePayPage.js +85 -50
- package/dist/web/components/account/AccountApplePayPage.js.map +1 -1
- package/dist/web/components/account/AccountApprovalPage.d.ts +34 -0
- package/dist/web/components/account/AccountApprovalPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountApprovalPage.js +145 -0
- package/dist/web/components/account/AccountApprovalPage.js.map +1 -0
- package/dist/web/components/account/AccountBankDetailsPage.d.ts +4 -3
- package/dist/web/components/account/AccountBankDetailsPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountBankDetailsPage.js +12 -10
- package/dist/web/components/account/AccountBankDetailsPage.js.map +1 -1
- package/dist/web/components/account/AccountBankPickerPage.d.ts +6 -9
- package/dist/web/components/account/AccountBankPickerPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountBankPickerPage.js +52 -23
- package/dist/web/components/account/AccountBankPickerPage.js.map +1 -1
- package/dist/web/components/account/AccountDeeplinkPage.d.ts +3 -1
- package/dist/web/components/account/AccountDeeplinkPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountDeeplinkPage.js +17 -9
- package/dist/web/components/account/AccountDeeplinkPage.js.map +1 -1
- package/dist/web/components/account/AccountEmailPage.d.ts +2 -1
- package/dist/web/components/account/AccountEmailPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountEmailPage.js +2 -2
- package/dist/web/components/account/AccountEmailPage.js.map +1 -1
- package/dist/web/components/account/AccountEnrollmentPage.d.ts +1 -4
- package/dist/web/components/account/AccountEnrollmentPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountEnrollmentPage.js +270 -236
- package/dist/web/components/account/AccountEnrollmentPage.js.map +1 -1
- package/dist/web/components/account/AccountEnrollmentUpdatePage.d.ts.map +1 -1
- package/dist/web/components/account/AccountEnrollmentUpdatePage.js +2 -1
- package/dist/web/components/account/AccountEnrollmentUpdatePage.js.map +1 -1
- package/dist/web/components/account/AccountFlowProvider.d.ts +8 -1
- package/dist/web/components/account/AccountFlowProvider.d.ts.map +1 -1
- package/dist/web/components/account/AccountFlowProvider.js +38 -3
- package/dist/web/components/account/AccountFlowProvider.js.map +1 -1
- package/dist/web/components/account/AccountInteracConfirmPage.d.ts +4 -3
- package/dist/web/components/account/AccountInteracConfirmPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountInteracConfirmPage.js +15 -23
- package/dist/web/components/account/AccountInteracConfirmPage.js.map +1 -1
- package/dist/web/components/account/AccountOtpCodeEntry.d.ts +2 -1
- package/dist/web/components/account/AccountOtpCodeEntry.d.ts.map +1 -1
- package/dist/web/components/account/AccountOtpCodeEntry.js +25 -6
- package/dist/web/components/account/AccountOtpCodeEntry.js.map +1 -1
- package/dist/web/components/account/AccountOtpPage.d.ts +1 -1
- package/dist/web/components/account/AccountOtpPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountOtpPage.js +4 -2
- package/dist/web/components/account/AccountOtpPage.js.map +1 -1
- package/dist/web/components/account/AccountPaymentPage.d.ts +3 -2
- package/dist/web/components/account/AccountPaymentPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountPaymentPage.js +10 -5
- package/dist/web/components/account/AccountPaymentPage.js.map +1 -1
- package/dist/web/components/account/AccountPaymentResumePage.d.ts +8 -0
- package/dist/web/components/account/AccountPaymentResumePage.d.ts.map +1 -0
- package/dist/web/components/account/AccountPaymentResumePage.js +42 -0
- package/dist/web/components/account/AccountPaymentResumePage.js.map +1 -0
- package/dist/web/components/account/AccountPhoneOtpPage.d.ts +1 -3
- package/dist/web/components/account/AccountPhoneOtpPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountPhoneOtpPage.js +3 -40
- package/dist/web/components/account/AccountPhoneOtpPage.js.map +1 -1
- package/dist/web/components/account/AccountPhonePage.d.ts +1 -2
- package/dist/web/components/account/AccountPhonePage.d.ts.map +1 -1
- package/dist/web/components/account/AccountPhonePage.js +1 -2
- package/dist/web/components/account/AccountPhonePage.js.map +1 -1
- package/dist/web/components/account/AccountRequestToPayPage.d.ts +28 -0
- package/dist/web/components/account/AccountRequestToPayPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountRequestToPayPage.js +79 -0
- package/dist/web/components/account/AccountRequestToPayPage.js.map +1 -0
- package/dist/web/components/account/AccountStatusPage.d.ts +4 -1
- package/dist/web/components/account/AccountStatusPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountStatusPage.js +2 -2
- package/dist/web/components/account/AccountStatusPage.js.map +1 -1
- package/dist/web/components/account/PaginatedEnrollmentForm.d.ts +4 -1
- package/dist/web/components/account/PaginatedEnrollmentForm.d.ts.map +1 -1
- package/dist/web/components/account/PaginatedEnrollmentForm.js +74 -8
- package/dist/web/components/account/PaginatedEnrollmentForm.js.map +1 -1
- package/dist/web/components/account/PaginatedEnrollmentForm.test.d.ts +2 -0
- package/dist/web/components/account/PaginatedEnrollmentForm.test.d.ts.map +1 -0
- package/dist/web/components/account/PaginatedEnrollmentForm.test.js +67 -0
- package/dist/web/components/account/PaginatedEnrollmentForm.test.js.map +1 -0
- package/dist/web/components/account/accountNav.d.ts +19 -9
- package/dist/web/components/account/accountNav.d.ts.map +1 -1
- package/dist/web/components/account/accountNav.js +76 -32
- package/dist/web/components/account/accountNav.js.map +1 -1
- package/dist/web/components/account/accountNav.test.js +180 -15
- package/dist/web/components/account/accountNav.test.js.map +1 -1
- package/dist/web/components/account/accountPaymentCompatibility.d.ts +40 -0
- package/dist/web/components/account/accountPaymentCompatibility.d.ts.map +1 -0
- package/dist/web/components/account/accountPaymentCompatibility.js +319 -0
- package/dist/web/components/account/accountPaymentCompatibility.js.map +1 -0
- package/dist/web/components/account/accountSessionRecreate.d.ts +15 -0
- package/dist/web/components/account/accountSessionRecreate.d.ts.map +1 -0
- package/dist/web/components/account/accountSessionRecreate.js +24 -0
- package/dist/web/components/account/accountSessionRecreate.js.map +1 -0
- package/dist/web/components/account/accountSessionRecreate.test.d.ts +2 -0
- package/dist/web/components/account/accountSessionRecreate.test.d.ts.map +1 -0
- package/dist/web/components/account/accountSessionRecreate.test.js +75 -0
- package/dist/web/components/account/accountSessionRecreate.test.js.map +1 -0
- package/dist/web/components/account/approvalInteractions.test.d.ts +2 -0
- package/dist/web/components/account/approvalInteractions.test.d.ts.map +1 -0
- package/dist/web/components/account/approvalInteractions.test.js +209 -0
- package/dist/web/components/account/approvalInteractions.test.js.map +1 -0
- package/dist/web/components/account/enrollmentProtocol.d.ts +76 -0
- package/dist/web/components/account/enrollmentProtocol.d.ts.map +1 -0
- package/dist/web/components/account/enrollmentProtocol.js +323 -0
- package/dist/web/components/account/enrollmentProtocol.js.map +1 -0
- package/dist/web/components/account/enrollmentProtocol.test.d.ts +2 -0
- package/dist/web/components/account/enrollmentProtocol.test.d.ts.map +1 -0
- package/dist/web/components/account/enrollmentProtocol.test.js +544 -0
- package/dist/web/components/account/enrollmentProtocol.test.js.map +1 -0
- package/dist/web/components/account/fiatPopup.d.ts +7 -2
- package/dist/web/components/account/fiatPopup.d.ts.map +1 -1
- package/dist/web/components/account/fiatPopup.js +16 -6
- package/dist/web/components/account/fiatPopup.js.map +1 -1
- package/dist/web/components/account/fiatPopup.test.js +8 -6
- package/dist/web/components/account/fiatPopup.test.js.map +1 -1
- package/dist/web/components/account/formSchemas.d.ts +6 -6
- package/dist/web/components/account/requestToPay.test.d.ts +2 -0
- package/dist/web/components/account/requestToPay.test.d.ts.map +1 -0
- package/dist/web/components/account/requestToPay.test.js +117 -0
- package/dist/web/components/account/requestToPay.test.js.map +1 -0
- package/dist/web/components/account/walletPayDetails.d.ts +8 -0
- package/dist/web/components/account/walletPayDetails.d.ts.map +1 -0
- package/dist/web/components/account/walletPayDetails.js +46 -0
- package/dist/web/components/account/walletPayDetails.js.map +1 -0
- package/dist/web/components/account/walletPayDetails.test.d.ts +2 -0
- package/dist/web/components/account/walletPayDetails.test.d.ts.map +1 -0
- package/dist/web/components/account/walletPayDetails.test.js +87 -0
- package/dist/web/components/account/walletPayDetails.test.js.map +1 -0
- package/dist/web/components/account/walletPayName.d.ts +8 -0
- package/dist/web/components/account/walletPayName.d.ts.map +1 -0
- package/dist/web/components/account/walletPayName.js +12 -0
- package/dist/web/components/account/walletPayName.js.map +1 -0
- package/dist/web/components/account/walletPayName.test.d.ts +2 -0
- package/dist/web/components/account/walletPayName.test.d.ts.map +1 -0
- package/dist/web/components/account/walletPayName.test.js +15 -0
- package/dist/web/components/account/walletPayName.test.js.map +1 -0
- package/dist/web/components/frameMessages.d.ts +2 -28
- package/dist/web/components/frameMessages.d.ts.map +1 -1
- package/dist/web/components/frameMessages.js +4 -61
- package/dist/web/components/frameMessages.js.map +1 -1
- package/dist/web/components/shared.d.ts.map +1 -1
- package/dist/web/components/shared.js +7 -2
- package/dist/web/components/shared.js.map +1 -1
- package/dist/web/hooks/accountAuthNav.d.ts.map +1 -1
- package/dist/web/hooks/accountAuthNav.js +1 -6
- package/dist/web/hooks/accountAuthNav.js.map +1 -1
- package/dist/web/hooks/accountAuthNav.test.js +9 -15
- package/dist/web/hooks/accountAuthNav.test.js.map +1 -1
- package/dist/web/hooks/formatUserError.d.ts.map +1 -1
- package/dist/web/hooks/formatUserError.js +10 -0
- package/dist/web/hooks/formatUserError.js.map +1 -1
- package/dist/web/hooks/formatUserError.test.d.ts +2 -0
- package/dist/web/hooks/formatUserError.test.d.ts.map +1 -0
- package/dist/web/hooks/formatUserError.test.js +36 -0
- package/dist/web/hooks/formatUserError.test.js.map +1 -0
- package/dist/web/hooks/locales/en.d.ts +8 -2
- package/dist/web/hooks/locales/en.d.ts.map +1 -1
- package/dist/web/hooks/locales/en.js +13 -7
- package/dist/web/hooks/locales/en.js.map +1 -1
- package/dist/web/hooks/locales/es.d.ts.map +1 -1
- package/dist/web/hooks/locales/es.js +13 -7
- package/dist/web/hooks/locales/es.js.map +1 -1
- package/dist/web/hooks/locales/ja.d.ts.map +1 -1
- package/dist/web/hooks/locales/ja.js +13 -7
- package/dist/web/hooks/locales/ja.js.map +1 -1
- package/dist/web/hooks/locales/ko.d.ts.map +1 -1
- package/dist/web/hooks/locales/ko.js +13 -7
- package/dist/web/hooks/locales/ko.js.map +1 -1
- package/dist/web/hooks/locales/pt.d.ts.map +1 -1
- package/dist/web/hooks/locales/pt.js +13 -7
- package/dist/web/hooks/locales/pt.js.map +1 -1
- package/dist/web/hooks/locales/zh.d.ts.map +1 -1
- package/dist/web/hooks/locales/zh.js +13 -7
- package/dist/web/hooks/locales/zh.js.map +1 -1
- package/dist/web/hooks/types.d.ts +16 -8
- package/dist/web/hooks/types.d.ts.map +1 -1
- package/dist/web/hooks/types.js.map +1 -1
- package/dist/web/hooks/useAccountFlow.d.ts +3 -9
- package/dist/web/hooks/useAccountFlow.d.ts.map +1 -1
- package/dist/web/hooks/useAccountFlow.js +0 -12
- package/dist/web/hooks/useAccountFlow.js.map +1 -1
- package/dist/web/hooks/useDepositPoller.js +1 -1
- package/dist/web/hooks/useDepositPoller.js.map +1 -1
- package/dist/web/hooks/useDraftDeposit.d.ts +3 -2
- package/dist/web/hooks/useDraftDeposit.d.ts.map +1 -1
- package/dist/web/hooks/useDraftDeposit.js +12 -5
- package/dist/web/hooks/useDraftDeposit.js.map +1 -1
- package/dist/web/hooks/useRequestToPayDeposit.d.ts +26 -0
- package/dist/web/hooks/useRequestToPayDeposit.d.ts.map +1 -0
- package/dist/web/hooks/useRequestToPayDeposit.js +81 -0
- package/dist/web/hooks/useRequestToPayDeposit.js.map +1 -0
- package/dist/web/hooks/useSessionNav.d.ts +11 -2
- package/dist/web/hooks/useSessionNav.d.ts.map +1 -1
- package/dist/web/hooks/useSessionNav.js +199 -36
- package/dist/web/hooks/useSessionNav.js.map +1 -1
- package/dist/web/index.d.ts +2 -0
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +1 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/styles.css +1 -1
- package/dist/web/theme.css +1 -1
- package/dist/web/theme.d.ts.map +1 -1
- package/dist/web/theme.js +3 -1
- package/dist/web/theme.js.map +1 -1
- 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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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;
|
|
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;AAUpD,OAAO,EAEL,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sDAAsD,CAAC;AAoB9D;;;;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;AAYD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,MAAM,EACN,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,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,MAAM,EAAE,SAAS,EAAE;QACnB,WAAW;QACX,eAAe,EAAE,gBAAgB;QACjC,UAAU;QACV,cAAc,EAAE,eAAe;QAC/B,YAAY;KACb,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;QACb,MAAM,EAAE,SAAS,EAAE;KACpB,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,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,oBAAoB;QAAE,OAAO,OAAO,CAAC;IAClE,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,YAAY,GAAG,0BAA0B,CAC7C,OAAO,CAAC,OAAO,EACf,aAAa,CACd,CAAC;IACF,OAAO,oBAAoB,CAAC;QAC1B,MAAM;QACN,WAAW;QACX,SAAS;QACT,IAAI;QACJ,aAAa;QACb,gBAAgB,EAAE,YAAY;KAC/B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -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 {
|
|
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"]
|
|
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":"
|
|
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,
|
|
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
|
-
{
|
|
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(
|
|
282
|
-
replaceLoading({
|
|
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({
|
|
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({
|
|
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
|
-
|
|
440
|
-
|
|
441
|
-
isFramed()
|
|
442
|
-
|
|
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
|
-
|
|
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
|
|
788
|
+
const response = await client.internal.sessions.recreate(session.sessionId, session.clientSecret, { countryCode });
|
|
676
789
|
setStack([]);
|
|
677
|
-
setSession(
|
|
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
|
-
}, [
|
|
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 [
|
|
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 [
|
|
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,
|