@0xkey-io/react-wallet-kit 0.1.0 → 0.2.0
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/dist/components/onramp/OnRamp.d.ts +4 -2
- package/dist/components/onramp/OnRamp.d.ts.map +1 -1
- package/dist/components/onramp/OnRamp.js +6 -2
- package/dist/components/onramp/OnRamp.js.map +1 -1
- package/dist/components/onramp/OnRamp.mjs +7 -2
- package/dist/components/onramp/OnRamp.mjs.map +1 -1
- package/dist/providers/client/Provider.d.ts.map +1 -1
- package/dist/providers/client/Provider.js +83 -85
- package/dist/providers/client/Provider.js.map +1 -1
- package/dist/providers/client/Provider.mjs +210 -229
- package/dist/providers/client/Provider.mjs.map +1 -1
- package/dist/providers/client/Types.d.ts +4 -4
- package/dist/providers/client/Types.d.ts.map +1 -1
- package/dist/providers/client/Types.js.map +1 -1
- package/dist/providers/client/Types.mjs.map +1 -1
- package/dist/types/method-types.d.ts +16 -2
- package/dist/types/method-types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import type { OnRampFlowResult } from "@0xkey-io/core";
|
|
2
3
|
type OnRampPageProps = {
|
|
3
4
|
icon: React.ReactNode;
|
|
4
5
|
onrampProvider: string;
|
|
5
6
|
action: () => Promise<void>;
|
|
6
7
|
completed: boolean;
|
|
8
|
+
result?: OnRampFlowResult | undefined;
|
|
7
9
|
successPageDuration?: number;
|
|
8
10
|
sandboxMode?: boolean;
|
|
9
|
-
onSuccess?: () => void;
|
|
11
|
+
onSuccess?: (result: OnRampFlowResult) => void;
|
|
10
12
|
onError?: (error: any) => void;
|
|
11
13
|
};
|
|
12
|
-
export declare function OnRampPage({ icon, onrampProvider, action, completed, successPageDuration, sandboxMode, onSuccess, onError, }: OnRampPageProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function OnRampPage({ icon, onrampProvider, action, completed, result, successPageDuration, sandboxMode, onSuccess, onError, }: OnRampPageProps): import("react/jsx-runtime").JSX.Element;
|
|
13
15
|
export {};
|
|
14
16
|
//# sourceMappingURL=OnRamp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnRamp.d.ts","sourceRoot":"","sources":["../../../src/components/onramp/OnRamp.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"OnRamp.d.ts","sourceRoot":"","sources":["../../../src/components/onramp/OnRamp.tsx"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,cAAc,EACd,MAAM,EACN,SAAS,EACT,MAAM,EACN,mBAA0B,EAC1B,WAAmB,EACnB,SAAS,EACT,OAAO,GACR,EAAE,eAAe,2CA0DjB"}
|
|
@@ -11,6 +11,7 @@ function OnRampPage({
|
|
|
11
11
|
onrampProvider,
|
|
12
12
|
action,
|
|
13
13
|
completed,
|
|
14
|
+
result,
|
|
14
15
|
successPageDuration = 2000,
|
|
15
16
|
sandboxMode = false,
|
|
16
17
|
onSuccess,
|
|
@@ -21,13 +22,16 @@ function OnRampPage({
|
|
|
21
22
|
isMobile
|
|
22
23
|
} = Hook.useModal();
|
|
23
24
|
if (completed) {
|
|
25
|
+
const status = result?.status ?? "unknown";
|
|
24
26
|
return jsxRuntime.jsx("div", {
|
|
25
27
|
className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300 text-center", isMobile ? "w-full" : "w-72"),
|
|
26
28
|
children: jsxRuntime.jsx(Success.SuccessPage, {
|
|
27
|
-
text:
|
|
29
|
+
text: `On Ramp Transaction ${status === "completed" ? "Complete" : status}!`,
|
|
28
30
|
duration: successPageDuration,
|
|
29
31
|
onComplete: () => {
|
|
30
|
-
|
|
32
|
+
if (result) {
|
|
33
|
+
onSuccess?.(result);
|
|
34
|
+
}
|
|
31
35
|
closeModal();
|
|
32
36
|
}
|
|
33
37
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnRamp.js","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","icon","onrampProvider","action","completed","successPageDuration","sandboxMode","onSuccess","onError","closeModal","isMobile","useModal","_jsx","className","clsx","children","SuccessPage","text","duration","onComplete","_jsxs","ActionPage","title","err","closeOnComplete"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"OnRamp.js","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","icon","onrampProvider","action","completed","result","successPageDuration","sandboxMode","onSuccess","onError","closeModal","isMobile","useModal","status","_jsx","className","clsx","children","SuccessPage","text","duration","onComplete","_jsxs","ActionPage","title","err","closeOnComplete"],"mappings":";;;;;;;;AAkBM,SAAUA,UAAUA,CAAC;EACzBC,IAAI;EACJC,cAAc;EACdC,MAAM;EACNC,SAAS;EACTC,MAAM;AACNC,EAAAA,mBAAmB,GAAG,IAAI;AAC1BC,EAAAA,WAAW,GAAG,KAAK;EACnBC,SAAS;AACTC,EAAAA;AAAO,CACS,EAAA;EAChB,MAAM;IAAEC,UAAU;AAAEC,IAAAA;GAAU,GAAGC,aAAQ,EAAE;AAE3C,EAAA,IAAIR,SAAS,EAAE;AACb,IAAA,MAAMS,MAAM,GAAGR,MAAM,EAAEQ,MAAM,IAAI,SAAS;IAC1C,OACEC;MACEC,SAAS,EAAEC,IAAI,CACb,wFAAwF,EACxFL,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAM,MAAAA,QAAA,EAEDH,eAACI,mBAAW,EAAA;QACVC,IAAI,EAAE,uBAAuBN,MAAM,KAAK,WAAW,GAAG,UAAU,GAAGA,MAAM,CAAA,CAAA,CAAG;AAC5EO,QAAAA,QAAQ,EAAEd,mBAAmB;QAC7Be,UAAU,EAAEA,MAAK;AACf,UAAA,IAAIhB,MAAM,EAAE;YACVG,SAAS,GAAGH,MAAM,CAAC;AACrB,UAAA;AACAK,UAAAA,UAAU,EAAE;AACd,QAAA;OAAC;AACD,KAAA,CACE;AAEV,EAAA;EAEA,OACEY,eAAA,CAAA,KAAA,EAAA;IACEP,SAAS,EAAEC,IAAI,CACb,wFAAwF,EACxFL,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAM,IAAAA,QAAA,EAAA,CAEDH,cAAA,CAACS,iBAAU,EAAA;AACTC,MAAAA,KAAK,EAAC,mBAAmB;AACzBvB,MAAAA,IAAI,EAAEA,IAAI;MACVE,MAAM,EAAE,YAAW;QACjB,IAAI;UACF,MAAMA,MAAM,EAAE;QAChB,CAAC,CAAC,OAAOsB,GAAG,EAAE;UACZhB,OAAO,GAAGgB,GAAG,CAAC;AACd,UAAA,MAAMA,GAAG;AACX,QAAA;MACF,CAAC;AACDC,MAAAA,eAAe,EAAE;AAAK,KAAA,CACtB,EACFZ,cAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,wEAAwE;AAAAE,MAAAA,QAAA,EACpFf,cAAc,KAAK,gCAAgC,GAChD,wDAAwD,GACxD;AAAuD,KAAA,CACvD,EACLK,WAAW,IACVO,cAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,wDAAwD;AAAAE,MAAAA,QAAA,EAAA;AAAA,KAAA,CAGxE;AAAA,GAAA,CACG;AAEV;;;;"}
|
|
@@ -10,6 +10,7 @@ function OnRampPage(_ref) {
|
|
|
10
10
|
onrampProvider = _ref.onrampProvider,
|
|
11
11
|
_action = _ref.action,
|
|
12
12
|
completed = _ref.completed,
|
|
13
|
+
result = _ref.result,
|
|
13
14
|
_ref$successPageDurat = _ref.successPageDuration,
|
|
14
15
|
successPageDuration = _ref$successPageDurat === void 0 ? 2000 : _ref$successPageDurat,
|
|
15
16
|
_ref$sandboxMode = _ref.sandboxMode,
|
|
@@ -20,13 +21,17 @@ function OnRampPage(_ref) {
|
|
|
20
21
|
closeModal = _useModal.closeModal,
|
|
21
22
|
isMobile = _useModal.isMobile;
|
|
22
23
|
if (completed) {
|
|
24
|
+
var _result$status;
|
|
25
|
+
var status = (_result$status = result === null || result === void 0 ? void 0 : result.status) !== null && _result$status !== void 0 ? _result$status : "unknown";
|
|
23
26
|
return jsx("div", {
|
|
24
27
|
className: clsx("flex flex-col items-center justify-center py-5 transition-all duration-300 text-center", isMobile ? "w-full" : "w-72"),
|
|
25
28
|
children: jsx(SuccessPage, {
|
|
26
|
-
text: "On Ramp Transaction Complete!",
|
|
29
|
+
text: "On Ramp Transaction ".concat(status === "completed" ? "Complete" : status, "!"),
|
|
27
30
|
duration: successPageDuration,
|
|
28
31
|
onComplete: function onComplete() {
|
|
29
|
-
|
|
32
|
+
if (result) {
|
|
33
|
+
onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(result);
|
|
34
|
+
}
|
|
30
35
|
closeModal();
|
|
31
36
|
}
|
|
32
37
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnRamp.mjs","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","_ref","icon","onrampProvider","action","completed","_ref$successPageDurat","successPageDuration","_ref$sandboxMode","sandboxMode","onSuccess","onError","_useModal","useModal","closeModal","isMobile","_jsx","className","clsx","children","SuccessPage","text","duration","onComplete","_jsxs","ActionPage","title","_action2","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","v","a","apply","arguments","closeOnComplete"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"OnRamp.mjs","sources":["../../../src/components/onramp/OnRamp.tsx"],"sourcesContent":[null],"names":["OnRampPage","_ref","icon","onrampProvider","action","completed","result","_ref$successPageDurat","successPageDuration","_ref$sandboxMode","sandboxMode","onSuccess","onError","_useModal","useModal","closeModal","isMobile","_result$status","status","_jsx","className","clsx","children","SuccessPage","text","concat","duration","onComplete","_jsxs","ActionPage","title","_action2","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","v","a","apply","arguments","closeOnComplete"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/providers/client/Provider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/providers/client/Provider.tsx"],"names":[],"mappings":"AAgIA,OAAO,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAsB5E,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAM5B,MAAM,kBAAkB,CAAC;AAwD1B;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwoLxD,CAAC"}
|
|
@@ -3516,48 +3516,39 @@ const ClientProvider = ({
|
|
|
3516
3516
|
urlForSignature,
|
|
3517
3517
|
countryCode,
|
|
3518
3518
|
onrampProvider = "FIAT_ON_RAMP_PROVIDER_MOONPAY",
|
|
3519
|
-
sandboxMode = true,
|
|
3520
3519
|
successPageDuration = 2000,
|
|
3521
|
-
openInNewTab = false
|
|
3520
|
+
openInNewTab = false,
|
|
3521
|
+
openMode,
|
|
3522
|
+
polling,
|
|
3523
|
+
onStatusChange
|
|
3522
3524
|
} = params;
|
|
3525
|
+
if (params.sandboxMode === undefined) {
|
|
3526
|
+
throw new core.OnRampError(core.OnRampErrorCode.SANDBOX_MODE_REQUIRED, "sandboxMode must be explicitly set for on-ramp flows.");
|
|
3527
|
+
}
|
|
3528
|
+
// Fail fast (before opening any modal/window) when the provider has no
|
|
3529
|
+
// supported runtime, so callers get a typed error instead of a popup.
|
|
3530
|
+
core.assertOnRampProviderSupported(onrampProvider);
|
|
3531
|
+
if (!client?.httpClient) {
|
|
3532
|
+
throw new sdkTypes.ZeroXKeyError("Client is not initialized.", sdkTypes.ZeroXKeyErrorCodes.CLIENT_NOT_INITIALIZED);
|
|
3533
|
+
}
|
|
3523
3534
|
const s = await getSession();
|
|
3524
3535
|
const organizationId = params?.organizationId || s?.organizationId;
|
|
3525
3536
|
if (!organizationId) {
|
|
3526
3537
|
throw new sdkTypes.ZeroXKeyError("A session or passed in organization ID is required.", sdkTypes.ZeroXKeyErrorCodes.INVALID_REQUEST);
|
|
3527
3538
|
}
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
case walletAccount.addressFormat?.includes("ADDRESS_FORMAT_BITCOIN"):
|
|
3536
|
-
cryptoCurrencyCode = sdkTypes.FiatOnRampCryptoCurrency.BITCOIN;
|
|
3537
|
-
network = sdkTypes.FiatOnRampBlockchainNetwork.BITCOIN;
|
|
3538
|
-
break;
|
|
3539
|
-
case walletAccount.addressFormat === "ADDRESS_FORMAT_SOLANA":
|
|
3540
|
-
cryptoCurrencyCode = sdkTypes.FiatOnRampCryptoCurrency.SOLANA;
|
|
3541
|
-
network = sdkTypes.FiatOnRampBlockchainNetwork.SOLANA;
|
|
3542
|
-
break;
|
|
3543
|
-
default:
|
|
3544
|
-
cryptoCurrencyCode = sdkTypes.FiatOnRampCryptoCurrency.ETHEREUM;
|
|
3545
|
-
network = sdkTypes.FiatOnRampBlockchainNetwork.ETHEREUM;
|
|
3546
|
-
break;
|
|
3547
|
-
}
|
|
3548
|
-
const openNewTab = openInNewTab || isMobile;
|
|
3549
|
-
cryptoCurrencyCode = params.cryptoCurrencyCode || cryptoCurrencyCode;
|
|
3550
|
-
network = params.network || network;
|
|
3539
|
+
const inferredAsset = params.network && params.cryptoCurrencyCode ? undefined : core.inferOnRampAssetFromWalletAccount(walletAccount);
|
|
3540
|
+
const cryptoCurrencyCode = params.cryptoCurrencyCode ?? inferredAsset?.cryptoCurrencyCode;
|
|
3541
|
+
const network = params.network ?? inferredAsset?.network;
|
|
3542
|
+
if (!cryptoCurrencyCode || !network) {
|
|
3543
|
+
throw new core.OnRampError(core.OnRampErrorCode.ASSET_REQUIRED, "network and cryptoCurrencyCode are required for on-ramp flows.");
|
|
3544
|
+
}
|
|
3545
|
+
const resolvedOpenMode = openMode ?? (openInNewTab || isMobile ? "newTab" : "popup");
|
|
3551
3546
|
return new Promise((resolve, reject) => {
|
|
3552
3547
|
const OnRampContainer = () => {
|
|
3553
3548
|
const [completed, setCompleted] = react.useState(false);
|
|
3554
|
-
const
|
|
3555
|
-
const
|
|
3556
|
-
|
|
3557
|
-
clearInterval(pollingRef.current);
|
|
3558
|
-
pollingRef.current = null;
|
|
3559
|
-
}
|
|
3560
|
-
};
|
|
3549
|
+
const [result, setResult] = react.useState();
|
|
3550
|
+
const abortRef = react.useRef(null);
|
|
3551
|
+
const cleanup = () => abortRef.current?.abort();
|
|
3561
3552
|
react.useEffect(() => {
|
|
3562
3553
|
return () => {
|
|
3563
3554
|
cleanup();
|
|
@@ -3566,17 +3557,21 @@ const ClientProvider = ({
|
|
|
3566
3557
|
const action = async () => {
|
|
3567
3558
|
try {
|
|
3568
3559
|
let onRampWindow = null;
|
|
3569
|
-
if (
|
|
3560
|
+
if (resolvedOpenMode === "newTab") {
|
|
3570
3561
|
onRampWindow = window.open("", "_blank");
|
|
3571
|
-
if (!onRampWindow) throw new
|
|
3562
|
+
if (!onRampWindow) throw new core.OnRampError(core.OnRampErrorCode.POPUP_BLOCKED, "Failed to open On Ramp tab.");
|
|
3572
3563
|
}
|
|
3573
|
-
const
|
|
3564
|
+
const initResult = await core.initOnRampFlow({
|
|
3565
|
+
runtimeClient: client.httpClient,
|
|
3574
3566
|
onrampProvider,
|
|
3575
3567
|
walletAddress: walletAccount.address,
|
|
3576
3568
|
network,
|
|
3577
3569
|
cryptoCurrencyCode,
|
|
3578
|
-
sandboxMode,
|
|
3579
3570
|
organizationId,
|
|
3571
|
+
sandboxMode: params.sandboxMode,
|
|
3572
|
+
...(params.stampWith ? {
|
|
3573
|
+
stampWith: params.stampWith
|
|
3574
|
+
} : {}),
|
|
3580
3575
|
...(fiatCurrencyCode ? {
|
|
3581
3576
|
fiatCurrencyCode
|
|
3582
3577
|
} : {}),
|
|
@@ -3592,63 +3587,63 @@ const ClientProvider = ({
|
|
|
3592
3587
|
...(countrySubdivisionCode ? {
|
|
3593
3588
|
countrySubdivisionCode
|
|
3594
3589
|
} : {}),
|
|
3595
|
-
...(sandboxMode !== undefined ? {
|
|
3596
|
-
sandboxMode
|
|
3597
|
-
} : {}),
|
|
3598
3590
|
...(urlForSignature ? {
|
|
3599
3591
|
urlForSignature
|
|
3600
3592
|
} : {})
|
|
3601
3593
|
});
|
|
3602
|
-
|
|
3603
|
-
if (
|
|
3604
|
-
|
|
3594
|
+
onStatusChange?.(initResult);
|
|
3595
|
+
if (resolvedOpenMode === "returnUrl") {
|
|
3596
|
+
setResult(initResult);
|
|
3597
|
+
setCompleted(true);
|
|
3598
|
+
return;
|
|
3599
|
+
}
|
|
3600
|
+
const providerUrl = initResult.signedUrl ?? initResult.onRampUrl;
|
|
3601
|
+
if (resolvedOpenMode === "newTab" && onRampWindow) {
|
|
3602
|
+
onRampWindow.location.href = providerUrl;
|
|
3605
3603
|
} else {
|
|
3606
3604
|
const popupWidth = 500;
|
|
3607
3605
|
const popupHeight = 600;
|
|
3608
3606
|
const left = window.screenX + (window.innerWidth - popupWidth) / 2;
|
|
3609
3607
|
const top = window.screenY + (window.innerHeight - popupHeight) / 2;
|
|
3610
|
-
onRampWindow = window.open(
|
|
3611
|
-
if (!onRampWindow) throw new
|
|
3608
|
+
onRampWindow = window.open(providerUrl, "_blank", `width=${popupWidth},height=${popupHeight},top=${top},left=${left},scrollbars=yes,resizable=yes`);
|
|
3609
|
+
if (!onRampWindow) throw new core.OnRampError(core.OnRampErrorCode.POPUP_BLOCKED, "Failed to open On Ramp window.");
|
|
3612
3610
|
}
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
const status = resp?.transactionStatus;
|
|
3639
|
-
if (["COMPLETED", "FAILED", "CANCELLED"].includes(status ?? "")) {
|
|
3640
|
-
cleanup();
|
|
3641
|
-
try {
|
|
3642
|
-
onRampWindow?.close();
|
|
3643
|
-
} catch {}
|
|
3644
|
-
setCompleted(true);
|
|
3645
|
-
resolveAction();
|
|
3646
|
-
}
|
|
3647
|
-
} catch (error) {
|
|
3648
|
-
console.warn("Polling error (ignored):", error);
|
|
3649
|
-
}
|
|
3650
|
-
}, 3000);
|
|
3611
|
+
abortRef.current = new AbortController();
|
|
3612
|
+
const status = await core.pollOnRampTransactionStatus({
|
|
3613
|
+
runtimeClient: client.httpClient,
|
|
3614
|
+
organizationId,
|
|
3615
|
+
transactionId: initResult.onRampTransactionId,
|
|
3616
|
+
refresh: polling?.refresh ?? true,
|
|
3617
|
+
signal: abortRef.current.signal,
|
|
3618
|
+
onStatusUpdate: polledStatus => {
|
|
3619
|
+
onStatusChange?.({
|
|
3620
|
+
...initResult,
|
|
3621
|
+
status: polledStatus
|
|
3622
|
+
});
|
|
3623
|
+
},
|
|
3624
|
+
...(params.stampWith ? {
|
|
3625
|
+
stampWith: params.stampWith
|
|
3626
|
+
} : {}),
|
|
3627
|
+
...(polling?.intervalMs ? {
|
|
3628
|
+
intervalMs: polling.intervalMs
|
|
3629
|
+
} : {}),
|
|
3630
|
+
...(polling?.timeoutMs ? {
|
|
3631
|
+
timeoutMs: polling.timeoutMs
|
|
3632
|
+
} : {}),
|
|
3633
|
+
...(polling?.maxConsecutiveErrors ? {
|
|
3634
|
+
maxConsecutiveErrors: polling.maxConsecutiveErrors
|
|
3635
|
+
} : {})
|
|
3651
3636
|
});
|
|
3637
|
+
try {
|
|
3638
|
+
onRampWindow?.close();
|
|
3639
|
+
} catch {}
|
|
3640
|
+
// The terminal status was already emitted via onStatusUpdate
|
|
3641
|
+
// inside pollOnRampTransactionStatus; avoid a duplicate callback.
|
|
3642
|
+
setResult({
|
|
3643
|
+
...initResult,
|
|
3644
|
+
status
|
|
3645
|
+
});
|
|
3646
|
+
setCompleted(true);
|
|
3652
3647
|
} catch (err) {
|
|
3653
3648
|
cleanup();
|
|
3654
3649
|
throw err;
|
|
@@ -3662,10 +3657,11 @@ const ClientProvider = ({
|
|
|
3662
3657
|
}),
|
|
3663
3658
|
onrampProvider: onrampProvider,
|
|
3664
3659
|
action: action,
|
|
3665
|
-
sandboxMode: sandboxMode,
|
|
3660
|
+
sandboxMode: params.sandboxMode,
|
|
3666
3661
|
completed: completed,
|
|
3662
|
+
result: result,
|
|
3667
3663
|
successPageDuration: successPageDuration,
|
|
3668
|
-
onSuccess:
|
|
3664
|
+
onSuccess: resolvedResult => resolve(resolvedResult),
|
|
3669
3665
|
onError: err => reject(err)
|
|
3670
3666
|
});
|
|
3671
3667
|
};
|
|
@@ -3674,7 +3670,9 @@ const ClientProvider = ({
|
|
|
3674
3670
|
content: jsxRuntime.jsx(OnRampContainer, {}),
|
|
3675
3671
|
showTitle: false,
|
|
3676
3672
|
preventBack: true,
|
|
3677
|
-
onClose: () =>
|
|
3673
|
+
onClose: () => {
|
|
3674
|
+
reject(new core.OnRampError(core.OnRampErrorCode.USER_ABORTED, "User canceled the onramp process."));
|
|
3675
|
+
}
|
|
3678
3676
|
});
|
|
3679
3677
|
});
|
|
3680
3678
|
}, [getSession, client, pushPage]);
|