thirdweb 5.105.46 → 5.105.47

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 (55) hide show
  1. package/dist/cjs/react/core/hooks/useStepExecutor.js +68 -51
  2. package/dist/cjs/react/core/hooks/useStepExecutor.js.map +1 -1
  3. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js +1 -2
  4. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  5. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js +1 -1
  6. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  7. package/dist/cjs/react/web/ui/Bridge/QuoteLoader.js +1 -0
  8. package/dist/cjs/react/web/ui/Bridge/QuoteLoader.js.map +1 -1
  9. package/dist/cjs/react/web/ui/Bridge/payment-details/PaymentDetails.js +2 -1
  10. package/dist/cjs/react/web/ui/Bridge/payment-details/PaymentDetails.js.map +1 -1
  11. package/dist/cjs/react/web/ui/Bridge/payment-selection/PaymentSelection.js +6 -5
  12. package/dist/cjs/react/web/ui/Bridge/payment-selection/PaymentSelection.js.map +1 -1
  13. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +1 -0
  14. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -1
  15. package/dist/cjs/version.js +1 -1
  16. package/dist/esm/react/core/hooks/useStepExecutor.js +68 -51
  17. package/dist/esm/react/core/hooks/useStepExecutor.js.map +1 -1
  18. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js +1 -2
  19. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  20. package/dist/esm/react/web/ui/Bridge/BuyWidget.js +1 -1
  21. package/dist/esm/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  22. package/dist/esm/react/web/ui/Bridge/QuoteLoader.js +1 -0
  23. package/dist/esm/react/web/ui/Bridge/QuoteLoader.js.map +1 -1
  24. package/dist/esm/react/web/ui/Bridge/payment-details/PaymentDetails.js +2 -1
  25. package/dist/esm/react/web/ui/Bridge/payment-details/PaymentDetails.js.map +1 -1
  26. package/dist/esm/react/web/ui/Bridge/payment-selection/PaymentSelection.js +6 -5
  27. package/dist/esm/react/web/ui/Bridge/payment-selection/PaymentSelection.js.map +1 -1
  28. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +1 -0
  29. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -1
  30. package/dist/esm/version.js +1 -1
  31. package/dist/types/react/core/hooks/useStepExecutor.d.ts +1 -1
  32. package/dist/types/react/core/hooks/useStepExecutor.d.ts.map +1 -1
  33. package/dist/types/react/core/machines/paymentMachine.d.ts +1 -1
  34. package/dist/types/react/core/machines/paymentMachine.d.ts.map +1 -1
  35. package/dist/types/react/web/ui/Bridge/BridgeOrchestrator.d.ts.map +1 -1
  36. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts +4 -0
  37. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts.map +1 -1
  38. package/dist/types/react/web/ui/Bridge/QuoteLoader.d.ts.map +1 -1
  39. package/dist/types/react/web/ui/Bridge/StepRunner.d.ts +1 -1
  40. package/dist/types/react/web/ui/Bridge/StepRunner.d.ts.map +1 -1
  41. package/dist/types/react/web/ui/Bridge/payment-details/PaymentDetails.d.ts.map +1 -1
  42. package/dist/types/react/web/ui/Bridge/payment-selection/PaymentSelection.d.ts.map +1 -1
  43. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.d.ts.map +1 -1
  44. package/dist/types/version.d.ts +1 -1
  45. package/package.json +1 -1
  46. package/src/react/core/hooks/useStepExecutor.ts +88 -71
  47. package/src/react/core/machines/paymentMachine.ts +1 -1
  48. package/src/react/web/ui/Bridge/BridgeOrchestrator.tsx +1 -2
  49. package/src/react/web/ui/Bridge/BuyWidget.tsx +6 -1
  50. package/src/react/web/ui/Bridge/QuoteLoader.tsx +1 -0
  51. package/src/react/web/ui/Bridge/StepRunner.tsx +1 -1
  52. package/src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx +2 -1
  53. package/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx +9 -5
  54. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.tsx +1 -0
  55. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentDetails.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AASjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAC7B;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,MAAM,EACN,aAAa,EACb,aAAa,EACb,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CA6UrB"}
1
+ {"version":3,"file":"PaymentDetails.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AASjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAC7B;;OAEG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,MAAM,EACN,aAAa,EACb,aAAa,EACb,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CA8UrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentSelection.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAM/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAIzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAKhE,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,gBAAgB,EAAE,KAAK,CAAC;IAExB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,uBAAuB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IAEhE;;OAEG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;IAExC;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAEjC;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAQD,wBAAgB,gBAAgB,CAAC,EAC/B,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACP,MAAM,EACN,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,cAAmC,EACnC,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,qBAAqB,2CAoMvB"}
1
+ {"version":3,"file":"PaymentSelection.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAM/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAIzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAKhE,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,gBAAgB,EAAE,KAAK,CAAC;IAExB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,uBAAuB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IAEhE;;OAEG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;IAExC;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAEjC;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAQD,wBAAgB,gBAAgB,CAAC,EAC/B,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACP,MAAM,EACN,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,cAAmC,EACnC,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,qBAAqB,2CAwMvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"FiatValue.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAIhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,wBAAgB,SAAS,CACvB,KAAK,EAAE;IACL,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC,GAAG,SAAS,kDAgCd"}
1
+ {"version":3,"file":"FiatValue.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAIhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,wBAAgB,SAAS,CACvB,KAAK,EAAE;IACL,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC,GAAG,SAAS,kDAiCd"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.105.46";
1
+ export declare const version = "5.105.47";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -388,7 +388,7 @@
388
388
  }
389
389
  },
390
390
  "typings": "./dist/types/exports/thirdweb.d.ts",
391
- "version": "5.105.46",
391
+ "version": "5.105.47",
392
392
  "scripts": {
393
393
  "bench": "vitest -c ./test/vitest.config.ts bench",
394
394
  "bench:compare": "bun run ./benchmarks/run.ts",
@@ -38,7 +38,7 @@ interface StepExecutorOptions {
38
38
  /** Prepared quote returned by Bridge.prepare */
39
39
  request: BridgePrepareRequest;
40
40
  /** Wallet instance providing getAccount() & sendTransaction */
41
- wallet: Wallet;
41
+ wallet?: Wallet;
42
42
  /** Window adapter for opening on-ramp URLs (web / RN) */
43
43
  windowAdapter: WindowAdapter;
44
44
  /** Thirdweb client for API calls */
@@ -408,6 +408,14 @@ export function useStepExecutor(
408
408
  abortControllerRef.current = abortController;
409
409
 
410
410
  try {
411
+ if (flatTxs.length > 0 && !wallet) {
412
+ throw new ApiError({
413
+ code: "INVALID_INPUT",
414
+ message: "No wallet provided to execute transactions",
415
+ statusCode: 400,
416
+ });
417
+ }
418
+
411
419
  // Execute onramp first if configured and not already completed
412
420
  if (preparedQuote.type === "onramp" && onrampStatus === "pending") {
413
421
  await executeOnramp(
@@ -417,89 +425,98 @@ export function useStepExecutor(
417
425
  );
418
426
  }
419
427
 
420
- // Then execute transactions
421
- const account = wallet.getAccount();
422
- if (!account) {
423
- throw new ApiError({
424
- code: "INVALID_INPUT",
425
- message: "Wallet not connected",
426
- statusCode: 400,
427
- });
428
- }
429
-
430
- // Start from where we left off, or from the beginning
431
- const startIndex = currentTxIndex ?? 0;
432
-
433
- for (let i = startIndex; i < flatTxs.length; i++) {
434
- if (abortController.signal.aborted) {
435
- break;
428
+ if (flatTxs.length > 0) {
429
+ // Then execute transactions
430
+ if (!wallet) {
431
+ throw new ApiError({
432
+ code: "INVALID_INPUT",
433
+ message: "No wallet provided to execute transactions",
434
+ statusCode: 400,
435
+ });
436
436
  }
437
-
438
- const currentTx = flatTxs[i];
439
- if (!currentTx) {
440
- continue; // Skip invalid index
437
+ const account = wallet.getAccount();
438
+ if (!account) {
439
+ throw new ApiError({
440
+ code: "INVALID_INPUT",
441
+ message: "Wallet not connected",
442
+ statusCode: 400,
443
+ });
441
444
  }
442
445
 
443
- setCurrentTxIndex(i);
444
- const currentStepData = preparedQuote.steps[currentTx._stepIndex];
445
- if (!currentStepData) {
446
- throw new Error(`Invalid step index: ${currentTx._stepIndex}`);
447
- }
446
+ // Start from where we left off, or from the beginning
447
+ const startIndex = currentTxIndex ?? 0;
448
448
 
449
- // switch chain if needed
450
- if (currentTx.chainId !== wallet.getChain()?.id) {
451
- await wallet.switchChain(getCachedChain(currentTx.chainId));
452
- }
449
+ for (let i = startIndex; i < flatTxs.length; i++) {
450
+ if (abortController.signal.aborted) {
451
+ break;
452
+ }
453
453
 
454
- // Check if we can batch transactions
455
- const canBatch =
456
- account.sendBatchTransaction !== undefined && i < flatTxs.length - 1; // Not the last transaction
457
-
458
- if (canBatch) {
459
- // Find consecutive transactions on the same chain
460
- const batchTxs: FlattenedTx[] = [currentTx];
461
- let j = i + 1;
462
- while (j < flatTxs.length) {
463
- const nextTx = flatTxs[j];
464
- if (!nextTx || nextTx.chainId !== currentTx.chainId) {
465
- break;
466
- }
467
- batchTxs.push(nextTx);
468
- j++;
454
+ const currentTx = flatTxs[i];
455
+ if (!currentTx) {
456
+ continue; // Skip invalid index
457
+ }
458
+
459
+ setCurrentTxIndex(i);
460
+ const currentStepData = preparedQuote.steps[currentTx._stepIndex];
461
+ if (!currentStepData) {
462
+ throw new Error(`Invalid step index: ${currentTx._stepIndex}`);
463
+ }
464
+
465
+ // switch chain if needed
466
+ if (currentTx.chainId !== wallet.getChain()?.id) {
467
+ await wallet.switchChain(getCachedChain(currentTx.chainId));
469
468
  }
470
469
 
471
- // Execute batch if we have multiple transactions
472
- if (batchTxs.length > 1) {
473
- await executeBatch(
474
- batchTxs,
475
- account,
476
- completedStatusResults,
477
- abortController.signal,
478
- );
479
-
480
- // Mark all batched transactions as completed
481
- for (const tx of batchTxs) {
482
- setCompletedTxs((prev) => new Set(prev).add(tx._index));
470
+ // Check if we can batch transactions
471
+ const canBatch =
472
+ account.sendBatchTransaction !== undefined &&
473
+ i < flatTxs.length - 1; // Not the last transaction
474
+
475
+ if (canBatch) {
476
+ // Find consecutive transactions on the same chain
477
+ const batchTxs: FlattenedTx[] = [currentTx];
478
+ let j = i + 1;
479
+ while (j < flatTxs.length) {
480
+ const nextTx = flatTxs[j];
481
+ if (!nextTx || nextTx.chainId !== currentTx.chainId) {
482
+ break;
483
+ }
484
+ batchTxs.push(nextTx);
485
+ j++;
483
486
  }
484
487
 
485
- // Skip ahead
486
- i = j - 1;
487
- continue;
488
+ // Execute batch if we have multiple transactions
489
+ if (batchTxs.length > 1) {
490
+ await executeBatch(
491
+ batchTxs,
492
+ account,
493
+ completedStatusResults,
494
+ abortController.signal,
495
+ );
496
+
497
+ // Mark all batched transactions as completed
498
+ for (const tx of batchTxs) {
499
+ setCompletedTxs((prev) => new Set(prev).add(tx._index));
500
+ }
501
+
502
+ // Skip ahead
503
+ i = j - 1;
504
+ continue;
505
+ }
488
506
  }
489
- }
490
507
 
491
- // Execute single transaction
492
- await executeSingleTx(
493
- currentTx,
494
- account,
495
- completedStatusResults,
496
- abortController.signal,
497
- );
508
+ // Execute single transaction
509
+ await executeSingleTx(
510
+ currentTx,
511
+ account,
512
+ completedStatusResults,
513
+ abortController.signal,
514
+ );
498
515
 
499
- // Mark transaction as completed
500
- setCompletedTxs((prev) => new Set(prev).add(currentTx._index));
516
+ // Mark transaction as completed
517
+ setCompletedTxs((prev) => new Set(prev).add(currentTx._index));
518
+ }
501
519
  }
502
-
503
520
  // All done - check if we actually completed everything
504
521
  if (!abortController.signal.aborted) {
505
522
  setCurrentTxIndex(undefined);
@@ -29,7 +29,7 @@ export type PaymentMethod =
29
29
  }
30
30
  | {
31
31
  type: "fiat";
32
- payerWallet: Wallet;
32
+ payerWallet?: Wallet;
33
33
  currency: string;
34
34
  onramp: "stripe" | "coinbase" | "transak";
35
35
  };
@@ -369,8 +369,7 @@ export function BridgeOrchestrator({
369
369
 
370
370
  {state.value === "execute" &&
371
371
  state.context.quote &&
372
- state.context.request &&
373
- state.context.selectedPaymentMethod?.payerWallet && (
372
+ state.context.request && (
374
373
  <StepRunner
375
374
  autoStart={true}
376
375
  client={client}
@@ -193,6 +193,11 @@ export type BuyWidgetProps = {
193
193
  * Custom label for the main action button.
194
194
  */
195
195
  buttonLabel?: string;
196
+
197
+ /**
198
+ * The receiver address for the purchased funds.
199
+ */
200
+ receiverAddress?: Address;
196
201
  };
197
202
 
198
203
  // Enhanced UIOptions to handle unsupported token state
@@ -455,7 +460,7 @@ export function BuyWidget(props: BuyWidgetProps) {
455
460
  paymentMethods={props.paymentMethods}
456
461
  presetOptions={props.presetOptions}
457
462
  purchaseData={props.purchaseData}
458
- receiverAddress={undefined}
463
+ receiverAddress={props.receiverAddress}
459
464
  uiOptions={bridgeDataQuery.data.data}
460
465
  showThirdwebBranding={props.showThirdwebBranding}
461
466
  />
@@ -133,6 +133,7 @@ export function QuoteLoader({
133
133
  toChainId: destinationToken.chainId,
134
134
  toToken: destinationToken.address,
135
135
  });
136
+ return true;
136
137
  },
137
138
  queryKey: ["loading_quote", paymentMethod.type],
138
139
  });
@@ -30,7 +30,7 @@ interface StepRunnerProps {
30
30
  /**
31
31
  * Wallet instance for executing transactions
32
32
  */
33
- wallet: Wallet;
33
+ wallet?: Wallet;
34
34
 
35
35
  /**
36
36
  * Thirdweb client for API calls
@@ -101,6 +101,7 @@ export function PaymentDetails({
101
101
  : preparedQuote.intent.destinationTokenAddress,
102
102
  });
103
103
  }
104
+ return true;
104
105
  },
105
106
  queryKey: ["payment_details", preparedQuote.type],
106
107
  });
@@ -239,7 +240,7 @@ export function PaymentDetails({
239
240
  receiver={preparedQuote.intent.receiver}
240
241
  sender={
241
242
  preparedQuote.intent.sender ||
242
- paymentMethod.payerWallet.getAccount()?.address
243
+ paymentMethod.payerWallet?.getAccount()?.address
243
244
  }
244
245
  toAmount={displayData.destinationAmount}
245
246
  toToken={displayData.destinationToken}
@@ -196,15 +196,17 @@ export function PaymentSelection({
196
196
  const handleOnrampProviderSelected = (
197
197
  provider: "coinbase" | "stripe" | "transak",
198
198
  ) => {
199
- if (!payerWallet) {
200
- onError(new Error("No wallet available for fiat payment"));
199
+ const recipientAddress =
200
+ receiverAddress || payerWallet?.getAccount()?.address;
201
+ if (!recipientAddress) {
202
+ onError(new Error("No recipient address available for fiat payment"));
201
203
  return;
202
204
  }
203
205
 
204
206
  const fiatPaymentMethod: PaymentMethod = {
205
- currency: "USD",
207
+ currency: currency || "USD",
206
208
  onramp: provider,
207
- payerWallet, // Default to USD for now
209
+ payerWallet,
208
210
  type: "fiat",
209
211
  };
210
212
  handlePaymentMethodSelected(fiatPaymentMethod);
@@ -307,7 +309,9 @@ export function PaymentSelection({
307
309
  country={country}
308
310
  client={client}
309
311
  onProviderSelected={handleOnrampProviderSelected}
310
- toAddress={receiverAddress || ""}
312
+ toAddress={
313
+ receiverAddress || payerWallet?.getAccount()?.address || ""
314
+ }
311
315
  toAmount={destinationAmount}
312
316
  toChainId={destinationToken.chainId}
313
317
  toTokenAddress={destinationToken.address}
@@ -36,6 +36,7 @@ export function FiatValue(
36
36
  props.chain.id,
37
37
  getTokenAddress(props.token),
38
38
  deferredTokenAmount,
39
+ props.currency,
39
40
  ],
40
41
  });
41
42
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.105.46";
1
+ export const version = "5.105.47";