thirdweb 5.121.0 → 5.121.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/cjs/react/core/hooks/useStepExecutor.js +12 -0
  2. package/dist/cjs/react/core/hooks/useStepExecutor.js.map +1 -1
  3. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js +4 -0
  4. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  5. package/dist/cjs/react/web/ui/Bridge/CheckoutWidget.js +4 -0
  6. package/dist/cjs/react/web/ui/Bridge/CheckoutWidget.js.map +1 -1
  7. package/dist/cjs/react/web/ui/Bridge/StepRunner.js +43 -2
  8. package/dist/cjs/react/web/ui/Bridge/StepRunner.js.map +1 -1
  9. package/dist/cjs/react/web/ui/Bridge/common/token-query.js +4 -1
  10. package/dist/cjs/react/web/ui/Bridge/common/token-query.js.map +1 -1
  11. package/dist/cjs/version.js +1 -1
  12. package/dist/esm/react/core/hooks/useStepExecutor.js +12 -0
  13. package/dist/esm/react/core/hooks/useStepExecutor.js.map +1 -1
  14. package/dist/esm/react/web/ui/Bridge/BuyWidget.js +4 -0
  15. package/dist/esm/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  16. package/dist/esm/react/web/ui/Bridge/CheckoutWidget.js +4 -0
  17. package/dist/esm/react/web/ui/Bridge/CheckoutWidget.js.map +1 -1
  18. package/dist/esm/react/web/ui/Bridge/StepRunner.js +43 -2
  19. package/dist/esm/react/web/ui/Bridge/StepRunner.js.map +1 -1
  20. package/dist/esm/react/web/ui/Bridge/common/token-query.js +4 -1
  21. package/dist/esm/react/web/ui/Bridge/common/token-query.js.map +1 -1
  22. package/dist/esm/version.js +1 -1
  23. package/dist/scripts/bridge-widget.js +90 -90
  24. package/dist/types/react/core/hooks/useStepExecutor.d.ts.map +1 -1
  25. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts.map +1 -1
  26. package/dist/types/react/web/ui/Bridge/CheckoutWidget.d.ts.map +1 -1
  27. package/dist/types/react/web/ui/Bridge/StepRunner.d.ts +9 -2
  28. package/dist/types/react/web/ui/Bridge/StepRunner.d.ts.map +1 -1
  29. package/dist/types/react/web/ui/Bridge/common/token-query.d.ts.map +1 -1
  30. package/dist/types/version.d.ts +1 -1
  31. package/package.json +1 -1
  32. package/src/react/core/hooks/useStepExecutor.test.tsx +134 -0
  33. package/src/react/core/hooks/useStepExecutor.ts +14 -0
  34. package/src/react/web/ui/Bridge/BuyWidget.tsx +7 -0
  35. package/src/react/web/ui/Bridge/CheckoutWidget.tsx +7 -0
  36. package/src/react/web/ui/Bridge/StepRunner.test.tsx +143 -0
  37. package/src/react/web/ui/Bridge/StepRunner.tsx +102 -7
  38. package/src/react/web/ui/Bridge/common/token-query.test.tsx +117 -0
  39. package/src/react/web/ui/Bridge/common/token-query.ts +4 -1
  40. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useStepExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/react/core/hooks/useStepExecutor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,KAAK,EACV,SAAS,EAEV,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,CAAC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC,GAC5D,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC,GAC7D,CAAC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC,GACjE,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,OAAO,CAC3B,YAAY,CAAC,MAAM,EACnB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CACxB,CAAC,CAAC;AAEP;;GAEG;AACH,UAAU,mBAAmB;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,aAAa,EAAE,aAAa,CAAC;IAC7B,oCAAoC;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qGAAqG;IACrG,UAAU,CAAC,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;CACnE;AAYD;;GAEG;AACH,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAChE,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,CAAC;IACvD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAmBD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAuqBpB"}
1
+ {"version":3,"file":"useStepExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/react/core/hooks/useStepExecutor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,KAAK,EACV,SAAS,EAEV,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,CAAC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC,GAC5D,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC,GAC7D,CAAC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC,GACjE,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,OAAO,CAC3B,YAAY,CAAC,MAAM,EACnB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CACxB,CAAC,CAAC;AAEP;;GAEG;AACH,UAAU,mBAAmB;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,aAAa,EAAE,aAAa,CAAC;IAC7B,oCAAoC;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qGAAqG;IACrG,UAAU,CAAC,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;CACnE;AAYD;;GAEG;AACH,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAChE,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,CAAC;IACvD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAmBD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAqrBpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BuyWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/BuyWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BuyWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/BuyWidget.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckoutWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/CheckoutWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CheckoutWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/CheckoutWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { ThirdwebClient } from "../../../../client/client.js";
2
2
  import type { Wallet } from "../../../../wallets/interfaces/wallet.js";
3
3
  import type { WindowAdapter } from "../../../core/adapters/WindowAdapter.js";
4
- import type { BridgePrepareRequest, BridgePrepareResult } from "../../../core/hooks/useBridgePrepare.js";
4
+ import { type BridgePrepareRequest, type BridgePrepareResult } from "../../../core/hooks/useBridgePrepare.js";
5
5
  import { type CompletedStatusResult } from "../../../core/hooks/useStepExecutor.js";
6
6
  type StepRunnerProps = {
7
7
  title: string | undefined;
@@ -38,7 +38,14 @@ type StepRunnerProps = {
38
38
  * Prepared quote to use
39
39
  */
40
40
  preparedQuote: BridgePrepareResult;
41
+ /**
42
+ * Called when the executing quote is replaced by a freshly prepared one
43
+ * (e.g. after retrying a failed onramp, which mints a new session). Lets the
44
+ * parent keep any state it derives from the quote — such as the success
45
+ * payload — in sync with the session that actually completed.
46
+ */
47
+ onQuoteUpdate?: (preparedQuote: BridgePrepareResult) => void;
41
48
  };
42
- export declare function StepRunner({ title, request, wallet, client, windowAdapter, onComplete, onCancel, onBack, autoStart, preparedQuote, }: StepRunnerProps): import("react/jsx-runtime").JSX.Element;
49
+ export declare function StepRunner({ preparedQuote, request, onQuoteUpdate, ...rest }: StepRunnerProps): import("react/jsx-runtime").JSX.Element;
43
50
  export {};
44
51
  //# sourceMappingURL=StepRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepRunner.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/StepRunner.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAO7E,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,wCAAwC,CAAC;AAQhD,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,oBAAoB,CAAC;IAE9B;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;IAEjE;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;CACpC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,aAAa,EACb,UAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,aAAa,GACd,EAAE,eAAe,2CAoVjB"}
1
+ {"version":3,"file":"StepRunner.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/StepRunner.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAO7E,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAGzB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,wCAAwC,CAAC;AAQhD,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,oBAAoB,CAAC;IAE9B;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;IAEjE;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,aAAa,EACb,OAAO,EACP,aAAa,EACb,GAAG,IAAI,EACR,EAAE,eAAe,2CA4DjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"token-query.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/common/token-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,GAC3C;IACE,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEN,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,cAAc,CAAC;CACxB,2EAgCA"}
1
+ {"version":3,"file":"token-query.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/common/token-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,GAC3C;IACE,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEN,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,cAAc,CAAC;CACxB,2EAmCA"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.121.0";
1
+ export declare const version = "5.121.2";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -400,7 +400,7 @@
400
400
  }
401
401
  },
402
402
  "typings": "./dist/types/exports/thirdweb.d.ts",
403
- "version": "5.121.0",
403
+ "version": "5.121.2",
404
404
  "scripts": {
405
405
  "bench": "vitest -c ./test/vitest.config.ts bench",
406
406
  "bench:compare": "bun run ./benchmarks/run.ts",
@@ -0,0 +1,134 @@
1
+ import { act, renderHook, waitFor } from "@testing-library/react";
2
+ import { describe, expect, it, vi } from "vitest";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import type { WindowAdapter } from "../adapters/WindowAdapter.js";
5
+ import type { BridgePrepareResult } from "./useBridgePrepare.js";
6
+ import { useStepExecutor } from "./useStepExecutor.js";
7
+
8
+ // Avoid firing analytics network calls while executing.
9
+ vi.mock("../../../analytics/track/pay.js", () => ({
10
+ trackPayEvent: vi.fn(),
11
+ }));
12
+
13
+ const { onrampStatusMock } = vi.hoisted(() => ({
14
+ onrampStatusMock: vi.fn(),
15
+ }));
16
+ vi.mock("../../../bridge/index.js", () => ({
17
+ Onramp: {
18
+ status: (options: unknown) => onrampStatusMock(options),
19
+ },
20
+ }));
21
+
22
+ // Minimal onramp quote with no follow-up transactions, so the executor's
23
+ // behaviour depends solely on the onramp outcome.
24
+ const ONRAMP_QUOTE: Extract<BridgePrepareResult, { type: "onramp" }> = {
25
+ currency: "USD",
26
+ currencyAmount: 30,
27
+ destinationAmount: 30000000n,
28
+ destinationToken: {
29
+ address: "0x0000000000000000000000000000000000000000",
30
+ chainId: 8453,
31
+ decimals: 6,
32
+ name: "USD Coin",
33
+ prices: {},
34
+ symbol: "USDC",
35
+ },
36
+ id: "onramp-session-id",
37
+ intent: {
38
+ chainId: 8453,
39
+ onramp: "transak",
40
+ receiver: "0x0000000000000000000000000000000000000001",
41
+ tokenAddress: "0x0000000000000000000000000000000000000000",
42
+ },
43
+ link: "https://onramp.example.com/session",
44
+ steps: [],
45
+ type: "onramp",
46
+ };
47
+
48
+ function createWindowAdapter(): WindowAdapter {
49
+ return { open: vi.fn(async () => {}) };
50
+ }
51
+
52
+ describe("useStepExecutor onramp guards", () => {
53
+ it("surfaces an error when the onramp reports FAILED", async () => {
54
+ onrampStatusMock.mockResolvedValue({ status: "FAILED", transactions: [] });
55
+ const windowAdapter = createWindowAdapter();
56
+
57
+ const { result } = renderHook(() =>
58
+ useStepExecutor({
59
+ client: TEST_CLIENT,
60
+ preparedQuote: ONRAMP_QUOTE,
61
+ windowAdapter,
62
+ }),
63
+ );
64
+
65
+ await act(async () => {
66
+ result.current.start();
67
+ });
68
+
69
+ await waitFor(() => expect(result.current.onrampStatus).toBe("failed"));
70
+ expect(result.current.error?.message).toBe("Payment failed");
71
+ expect(result.current.executionState).toBe("idle");
72
+ expect(windowAdapter.open).toHaveBeenCalledWith(ONRAMP_QUOTE.link);
73
+ });
74
+
75
+ it("does not report success when a prior onramp attempt failed", async () => {
76
+ onrampStatusMock.mockResolvedValue({ status: "FAILED", transactions: [] });
77
+ const windowAdapter = createWindowAdapter();
78
+ const onComplete = vi.fn();
79
+
80
+ const { result } = renderHook(() =>
81
+ useStepExecutor({
82
+ client: TEST_CLIENT,
83
+ onComplete,
84
+ preparedQuote: ONRAMP_QUOTE,
85
+ windowAdapter,
86
+ }),
87
+ );
88
+
89
+ // First attempt fails and leaves the onramp in the "failed" state.
90
+ await act(async () => {
91
+ result.current.start();
92
+ });
93
+ await waitFor(() => expect(result.current.onrampStatus).toBe("failed"));
94
+
95
+ // Retrying must fail fast on the incomplete onramp rather than proceeding.
96
+ await act(async () => {
97
+ result.current.retry();
98
+ });
99
+ await waitFor(() =>
100
+ expect(result.current.error?.message).toBe("Onramp did not complete"),
101
+ );
102
+ expect(result.current.error?.statusCode).toBe(500);
103
+ // Success must never be reported for an incomplete onramp.
104
+ expect(onComplete).not.toHaveBeenCalled();
105
+ });
106
+
107
+ it("marks the onramp complete before reporting success", async () => {
108
+ onrampStatusMock.mockResolvedValue({
109
+ status: "COMPLETED",
110
+ transactions: [],
111
+ });
112
+ const windowAdapter = createWindowAdapter();
113
+ const onComplete = vi.fn();
114
+
115
+ const { result } = renderHook(() =>
116
+ useStepExecutor({
117
+ client: TEST_CLIENT,
118
+ onComplete,
119
+ preparedQuote: ONRAMP_QUOTE,
120
+ windowAdapter,
121
+ }),
122
+ );
123
+
124
+ await act(async () => {
125
+ result.current.start();
126
+ });
127
+
128
+ await waitFor(() => expect(result.current.onrampStatus).toBe("completed"), {
129
+ timeout: 5000,
130
+ });
131
+ expect(result.current.error).toBeUndefined();
132
+ expect(onComplete).toHaveBeenCalledTimes(1);
133
+ });
134
+ });
@@ -466,6 +466,7 @@ export function useStepExecutor(
466
466
  return { completed: true };
467
467
  } else if (status === "FAILED") {
468
468
  setOnrampStatus("failed");
469
+ throw new Error("Payment failed");
469
470
  }
470
471
 
471
472
  return { completed: false };
@@ -517,12 +518,25 @@ export function useStepExecutor(
517
518
  }
518
519
 
519
520
  // Execute onramp first if configured and not already completed
521
+ let onrampCompleted =
522
+ preparedQuote.type !== "onramp" || onrampStatus === "completed";
520
523
  if (preparedQuote.type === "onramp" && onrampStatus === "pending") {
521
524
  await executeOnramp(
522
525
  preparedQuote,
523
526
  completedStatusResults,
524
527
  abortController.signal,
525
528
  );
529
+ onrampCompleted = true;
530
+ }
531
+
532
+ // An onramp must complete before any follow-up transactions run or
533
+ // success is reported.
534
+ if (!onrampCompleted) {
535
+ throw new ApiError({
536
+ code: "INTERNAL_SERVER_ERROR",
537
+ message: "Onramp did not complete",
538
+ statusCode: 500,
539
+ });
526
540
  }
527
541
 
528
542
  if (flatTxs.length > 0) {
@@ -731,6 +731,13 @@ function BridgeWidgetContent(
731
731
  completedStatuses,
732
732
  });
733
733
  }}
734
+ onQuoteUpdate={(quote) => {
735
+ // A failed onramp is retried with a fresh session; keep the success
736
+ // payload pointed at the session that actually completes.
737
+ setScreen((prev) =>
738
+ prev.id === "5:execute" ? { ...prev, preparedQuote: quote } : prev,
739
+ );
740
+ }}
734
741
  request={screen.request}
735
742
  wallet={screen.paymentMethod.payerWallet}
736
743
  windowAdapter={webWindowAdapter}
@@ -720,6 +720,13 @@ function CheckoutWidgetContent(
720
720
  completedStatuses,
721
721
  });
722
722
  }}
723
+ onQuoteUpdate={(quote) => {
724
+ // A failed onramp is retried with a fresh session; keep the success
725
+ // payload pointed at the session that actually completes.
726
+ setScreen((prev) =>
727
+ prev.id === "5:execute" ? { ...prev, preparedQuote: quote } : prev,
728
+ );
729
+ }}
723
730
  request={screen.request}
724
731
  wallet={screen.paymentMethod.payerWallet}
725
732
  windowAdapter={webWindowAdapter}
@@ -0,0 +1,143 @@
1
+ import { fireEvent, render, screen, waitFor } from "@testing-library/react";
2
+ import { beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import type { WindowAdapter } from "../../../core/adapters/WindowAdapter.js";
5
+ import { CustomThemeProvider } from "../../../core/design-system/CustomThemeProvider.js";
6
+ import type {
7
+ BridgePrepareRequest,
8
+ BridgePrepareResult,
9
+ } from "../../../core/hooks/useBridgePrepare.js";
10
+ import { StepRunner } from "./StepRunner.js";
11
+
12
+ // Controllable executor + prepare seams so the test drives the retry branch
13
+ // purely off `onrampStatus`.
14
+ const { executor, retrySpy, refetchSpy, FRESH_QUOTE } = vi.hoisted(() => ({
15
+ executor: {
16
+ error: undefined as Error | undefined,
17
+ onrampStatus: undefined as
18
+ | "pending"
19
+ | "executing"
20
+ | "completed"
21
+ | "failed"
22
+ | undefined,
23
+ },
24
+ FRESH_QUOTE: {
25
+ id: "fresh-session",
26
+ link: "https://onramp.example.com/fresh",
27
+ type: "onramp",
28
+ },
29
+ refetchSpy: vi.fn(),
30
+ retrySpy: vi.fn(),
31
+ }));
32
+
33
+ vi.mock("../../../core/hooks/useStepExecutor.js", () => ({
34
+ useStepExecutor: () => ({
35
+ cancel: vi.fn(),
36
+ currentStep: undefined,
37
+ error: executor.error,
38
+ executionState: "idle" as const,
39
+ onrampStatus: executor.onrampStatus,
40
+ progress: 0,
41
+ retry: retrySpy,
42
+ start: vi.fn(),
43
+ steps: [],
44
+ }),
45
+ }));
46
+
47
+ vi.mock("../../../core/hooks/useBridgePrepare.js", async (importOriginal) => {
48
+ const actual =
49
+ await importOriginal<
50
+ typeof import("../../../core/hooks/useBridgePrepare.js")
51
+ >();
52
+ return { ...actual, useBridgePrepare: () => ({ refetch: refetchSpy }) };
53
+ });
54
+
55
+ const ONRAMP_REQUEST: BridgePrepareRequest = {
56
+ chainId: 8453,
57
+ client: TEST_CLIENT,
58
+ onramp: "transak",
59
+ receiver: "0x0000000000000000000000000000000000000001",
60
+ tokenAddress: "0x0000000000000000000000000000000000000000",
61
+ type: "onramp",
62
+ };
63
+
64
+ const ONRAMP_QUOTE: Extract<BridgePrepareResult, { type: "onramp" }> = {
65
+ currency: "USD",
66
+ currencyAmount: 30,
67
+ destinationAmount: 30000000n,
68
+ destinationToken: {
69
+ address: "0x0000000000000000000000000000000000000000",
70
+ chainId: 8453,
71
+ decimals: 6,
72
+ name: "USD Coin",
73
+ prices: {},
74
+ symbol: "USDC",
75
+ },
76
+ id: "onramp-session-id",
77
+ intent: {
78
+ chainId: 8453,
79
+ onramp: "transak",
80
+ receiver: "0x0000000000000000000000000000000000000001",
81
+ tokenAddress: "0x0000000000000000000000000000000000000000",
82
+ },
83
+ link: "https://onramp.example.com/session",
84
+ steps: [],
85
+ type: "onramp",
86
+ };
87
+
88
+ function renderStepRunner() {
89
+ const onQuoteUpdate = vi.fn();
90
+ render(
91
+ <CustomThemeProvider theme="dark">
92
+ <StepRunner
93
+ autoStart={false}
94
+ client={TEST_CLIENT}
95
+ onBack={vi.fn()}
96
+ onCancel={vi.fn()}
97
+ onComplete={vi.fn()}
98
+ onQuoteUpdate={onQuoteUpdate}
99
+ preparedQuote={ONRAMP_QUOTE}
100
+ request={ONRAMP_REQUEST}
101
+ title={undefined}
102
+ wallet={undefined}
103
+ windowAdapter={{ open: vi.fn(async () => {}) } as WindowAdapter}
104
+ />
105
+ </CustomThemeProvider>,
106
+ );
107
+ return { onQuoteUpdate };
108
+ }
109
+
110
+ describe("StepRunner onramp retry recovery", () => {
111
+ beforeEach(() => {
112
+ retrySpy.mockReset();
113
+ refetchSpy.mockReset();
114
+ refetchSpy.mockResolvedValue({ data: FRESH_QUOTE });
115
+ executor.error = new Error("Payment failed");
116
+ });
117
+
118
+ it("re-prepares a fresh session when a failed onramp is retried", async () => {
119
+ executor.onrampStatus = "failed";
120
+ const { onQuoteUpdate } = renderStepRunner();
121
+
122
+ fireEvent.click(screen.getByText("Retry"));
123
+
124
+ await waitFor(() => expect(refetchSpy).toHaveBeenCalledTimes(1));
125
+ // Must NOT replay the dead session in place.
126
+ expect(retrySpy).not.toHaveBeenCalled();
127
+ await waitFor(() =>
128
+ expect(onQuoteUpdate).toHaveBeenCalledWith(FRESH_QUOTE),
129
+ );
130
+ });
131
+
132
+ it("retries in place (never re-onramps) once the onramp has completed", async () => {
133
+ // A post-onramp transaction failed: funds already arrived, so re-onramping
134
+ // would double-charge the buyer.
135
+ executor.onrampStatus = "completed";
136
+ renderStepRunner();
137
+
138
+ fireEvent.click(screen.getByText("Retry"));
139
+
140
+ expect(retrySpy).toHaveBeenCalledTimes(1);
141
+ expect(refetchSpy).not.toHaveBeenCalled();
142
+ });
143
+ });
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { CheckIcon, ClockIcon, Cross1Icon } from "@radix-ui/react-icons";
3
+ import { useCallback, useState } from "react";
3
4
  import type { RouteStep } from "../../../../bridge/types/Route.js";
4
5
  import type { Chain } from "../../../../chains/types.js";
5
6
  import { defineChain } from "../../../../chains/utils.js";
@@ -12,9 +13,11 @@ import {
12
13
  radius,
13
14
  spacing,
14
15
  } from "../../../core/design-system/index.js";
15
- import type {
16
- BridgePrepareRequest,
17
- BridgePrepareResult,
16
+ import {
17
+ type BridgePrepareRequest,
18
+ type BridgePrepareResult,
19
+ type UseBridgePrepareParams,
20
+ useBridgePrepare,
18
21
  } from "../../../core/hooks/useBridgePrepare.js";
19
22
  import {
20
23
  type CompletedStatusResult,
@@ -70,9 +73,93 @@ type StepRunnerProps = {
70
73
  * Prepared quote to use
71
74
  */
72
75
  preparedQuote: BridgePrepareResult;
76
+
77
+ /**
78
+ * Called when the executing quote is replaced by a freshly prepared one
79
+ * (e.g. after retrying a failed onramp, which mints a new session). Lets the
80
+ * parent keep any state it derives from the quote — such as the success
81
+ * payload — in sync with the session that actually completed.
82
+ */
83
+ onQuoteUpdate?: (preparedQuote: BridgePrepareResult) => void;
73
84
  };
74
85
 
75
86
  export function StepRunner({
87
+ preparedQuote,
88
+ request,
89
+ onQuoteUpdate,
90
+ ...rest
91
+ }: StepRunnerProps) {
92
+ const theme = useCustomTheme();
93
+
94
+ // The quote currently being executed. A failed onramp replaces this with a
95
+ // freshly prepared session (see requestFreshOnramp) rather than replaying the
96
+ // dead one.
97
+ const [activeQuote, setActiveQuote] =
98
+ useState<BridgePrepareResult>(preparedQuote);
99
+ // Bumped whenever the active quote is replaced, to remount the executor with
100
+ // a clean slate: a fresh onramp session and reset status.
101
+ const [runKey, setRunKey] = useState(0);
102
+ const [isRepreparing, setIsRepreparing] = useState(false);
103
+
104
+ // Disabled query used only to imperatively mint a fresh quote on retry.
105
+ // refetch() bypasses the cache, so it always returns a new onramp session.
106
+ const reprepare = useBridgePrepare({
107
+ ...(request as UseBridgePrepareParams),
108
+ enabled: false,
109
+ });
110
+
111
+ const requestFreshOnramp = useCallback(async () => {
112
+ setIsRepreparing(true);
113
+ const { data } = await reprepare.refetch();
114
+ setIsRepreparing(false);
115
+ if (data) {
116
+ setActiveQuote(data);
117
+ setRunKey((key) => key + 1);
118
+ onQuoteUpdate?.(data);
119
+ }
120
+ }, [reprepare, onQuoteUpdate]);
121
+
122
+ if (isRepreparing) {
123
+ return (
124
+ <Container
125
+ center="both"
126
+ flex="column"
127
+ fullHeight
128
+ px="md"
129
+ pb="md"
130
+ pt="md+"
131
+ >
132
+ <Spinner color="secondaryText" size="lg" />
133
+ <Spacer y="lg" />
134
+ <Text center color="secondaryText" size="sm">
135
+ Preparing a new payment session
136
+ </Text>
137
+ </Container>
138
+ );
139
+ }
140
+
141
+ return (
142
+ <StepExecution
143
+ key={runKey}
144
+ {...rest}
145
+ onRequestFreshOnramp={requestFreshOnramp}
146
+ preparedQuote={activeQuote}
147
+ request={request}
148
+ theme={theme}
149
+ />
150
+ );
151
+ }
152
+
153
+ type StepExecutionProps = Omit<
154
+ StepRunnerProps,
155
+ "preparedQuote" | "onQuoteUpdate"
156
+ > & {
157
+ preparedQuote: BridgePrepareResult;
158
+ onRequestFreshOnramp: () => void;
159
+ theme: ReturnType<typeof useCustomTheme>;
160
+ };
161
+
162
+ function StepExecution({
76
163
  title,
77
164
  request,
78
165
  wallet,
@@ -83,9 +170,9 @@ export function StepRunner({
83
170
  onBack,
84
171
  autoStart,
85
172
  preparedQuote,
86
- }: StepRunnerProps) {
87
- const theme = useCustomTheme();
88
-
173
+ onRequestFreshOnramp,
174
+ theme,
175
+ }: StepExecutionProps) {
89
176
  // Use the real step executor hook
90
177
  const {
91
178
  currentStep,
@@ -116,7 +203,15 @@ export function StepRunner({
116
203
  };
117
204
 
118
205
  const handleRetry = () => {
119
- retry();
206
+ // A failed onramp (funds never moved) needs a fresh session, not a replay
207
+ // of the dead/expired one. Any other failure — including one after the
208
+ // onramp already completed — must retry in place: re-onramping there would
209
+ // charge the buyer a second time.
210
+ if (request.type === "onramp" && onrampStatus === "failed") {
211
+ onRequestFreshOnramp();
212
+ } else {
213
+ retry();
214
+ }
120
215
  };
121
216
 
122
217
  const getStepStatus = (