Skip to content

Commit 671624d

Browse files
committed
update
1 parent ce52df9 commit 671624d

File tree

6 files changed

+32
-23
lines changed

6 files changed

+32
-23
lines changed

packages/thirdweb/src/react/web/ui/Bridge/BuyWidget.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import { PaymentSelection } from "./payment-selection/PaymentSelection.js";
4040
import { SuccessScreen } from "./payment-success/SuccessScreen.js";
4141
import { QuoteLoader } from "./QuoteLoader.js";
4242
import { StepRunner } from "./StepRunner.js";
43+
import type { RequiredParams } from "./types.js";
4344
import { UnsupportedTokenScreen } from "./UnsupportedTokenScreen.js";
4445

4546
export type BuyOrOnrampPrepareResult = Extract<
@@ -472,10 +473,6 @@ type BuyWidgetScreen =
472473
preparedQuote: BridgePrepareResult | undefined;
473474
};
474475

475-
type RequiredParams<T extends object, keys extends keyof T> = T & {
476-
[K in keys]-?: T[K];
477-
};
478-
479476
function BridgeWidgetContent(
480477
props: RequiredParams<
481478
BuyWidgetProps,
@@ -670,9 +667,8 @@ function BridgeWidgetContent(
670667
}}
671668
onComplete={(completedStatuses) => {
672669
if (
673-
// just a type guard - always true
674-
screen.preparedQuote?.type === "buy" ||
675-
screen.preparedQuote?.type === "onramp"
670+
screen.preparedQuote.type === "buy" ||
671+
screen.preparedQuote.type === "onramp"
676672
) {
677673
props.onSuccess?.(screen.preparedQuote);
678674
}

packages/thirdweb/src/react/web/ui/Bridge/CheckoutWidget.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,9 @@ function CheckoutWidgetContent(
475475
id: "1:init-ui",
476476
});
477477

478+
const mappedFeePayer: "receiver" | "sender" =
479+
props.feePayer === "seller" ? "receiver" : "sender";
480+
478481
const handleError = useCallback(
479482
(error: Error, quote: BridgePrepareResult | undefined) => {
480483
console.error(error);
@@ -532,7 +535,7 @@ function CheckoutWidgetContent(
532535
<PaymentSelection
533536
// from props
534537
client={props.client}
535-
feePayer={props.feePayer === "seller" ? "receiver" : "sender"}
538+
feePayer={mappedFeePayer}
536539
connectLocale={props.connectLocale}
537540
connectOptions={props.connectOptions}
538541
paymentMethods={props.paymentMethods}
@@ -568,7 +571,7 @@ function CheckoutWidgetContent(
568571
paymentLinkId={props.paymentLinkId}
569572
purchaseData={props.purchaseData}
570573
client={props.client}
571-
feePayer={props.feePayer === "seller" ? "receiver" : "sender"}
574+
feePayer={mappedFeePayer}
572575
// others
573576
sender={undefined}
574577
mode="direct_payment"
@@ -630,7 +633,7 @@ function CheckoutWidgetContent(
630633
mode: "direct_payment",
631634
paymentInfo: {
632635
amount: screen.destinationAmount,
633-
feePayer: props.feePayer === "seller" ? "receiver" : "sender",
636+
feePayer: mappedFeePayer,
634637
sellerAddress: props.seller,
635638
token: screen.destinationToken,
636639
},

packages/thirdweb/src/react/web/ui/Bridge/DirectPayment.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ type DirectPaymentProps = {
2323
description: string | undefined;
2424
image: string | undefined;
2525
};
26+
buttonLabel: string | undefined;
27+
2628
/**
2729
* ThirdwebClient for blockchain interactions
2830
*/
@@ -39,10 +41,8 @@ type DirectPaymentProps = {
3941

4042
/**
4143
* Whether to show thirdweb branding in the widget.
42-
* @default true
4344
*/
44-
showThirdwebBranding?: boolean;
45-
buttonLabel: string | undefined;
45+
showThirdwebBranding: boolean;
4646
};
4747

4848
export function DirectPayment({

packages/thirdweb/src/react/web/ui/Bridge/StepRunner.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ type StepRunnerProps = {
6464
/**
6565
* Called when user clicks the back button
6666
*/
67-
onBack: (() => void) | undefined;
67+
onBack: () => void;
6868

6969
/**
7070
* Prepared quote to use

packages/thirdweb/src/react/web/ui/Bridge/TransactionWidget.tsx

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -489,13 +489,15 @@ type TransactionWidgetScreen =
489489
destinationAmount: string;
490490
destinationToken: TokenWithPrices;
491491
receiverAddress: Address;
492+
transaction: PreparedTransaction;
492493
}
493494
| {
494495
id: "buy:2.load-quote";
495496
destinationAmount: string;
496497
destinationToken: TokenWithPrices;
497498
receiverAddress: Address;
498499
paymentMethod: PaymentMethod;
500+
transaction: PreparedTransaction;
499501
}
500502
| {
501503
id: "buy:3.preview";
@@ -505,6 +507,7 @@ type TransactionWidgetScreen =
505507
destinationToken: TokenWithPrices;
506508
paymentMethod: PaymentMethod;
507509
receiverAddress: Address;
510+
transaction: PreparedTransaction;
508511
}
509512
| {
510513
id: "buy:4.execute-buy";
@@ -514,11 +517,13 @@ type TransactionWidgetScreen =
514517
destinationToken: TokenWithPrices;
515518
paymentMethod: PaymentMethod;
516519
receiverAddress: Address;
520+
transaction: PreparedTransaction;
517521
}
518522
| {
519523
id: "buy:5.success";
520524
completedStatuses: CompletedStatusResult[];
521525
preparedQuote: BridgePrepareResult;
526+
transaction: PreparedTransaction;
522527
}
523528
| {
524529
id: "execute-tx";
@@ -567,11 +572,12 @@ function TransactionWidgetContent(
567572
image: props.image,
568573
}}
569574
connectOptions={props.connectOptions}
570-
onContinue={(amount, token, receiverAddress) => {
575+
onContinue={(destinationAmount, destinationToken, receiverAddress) => {
571576
setScreen({
572577
id: "buy:1.methodSelection",
573-
destinationAmount: amount,
574-
destinationToken: token,
578+
destinationAmount,
579+
destinationToken,
580+
transaction: props.transaction,
575581
receiverAddress,
576582
});
577583
}}
@@ -594,14 +600,14 @@ function TransactionWidgetContent(
594600
<PaymentSelection
595601
// from props
596602
client={props.client}
597-
feePayer={props.feePayer === "seller" ? "receiver" : "sender"}
598603
connectLocale={props.connectLocale}
599604
connectOptions={props.connectOptions}
600605
paymentMethods={props.paymentMethods}
601606
currency={props.currency}
602607
supportedTokens={props.supportedTokens}
603608
country={props.country}
604609
// others
610+
feePayer={undefined}
605611
destinationToken={screen.destinationToken}
606612
destinationAmount={screen.destinationAmount}
607613
receiverAddress={screen.receiverAddress}
@@ -630,8 +636,8 @@ function TransactionWidgetContent(
630636
paymentLinkId={props.paymentLinkId}
631637
purchaseData={props.purchaseData}
632638
client={props.client}
633-
feePayer={props.feePayer === "seller" ? "receiver" : "sender"}
634639
// others
640+
feePayer={undefined}
635641
sender={undefined}
636642
mode="transaction"
637643
amount={screen.destinationAmount}
@@ -690,7 +696,7 @@ function TransactionWidgetContent(
690696
preparedQuote={screen.preparedQuote}
691697
modeInfo={{
692698
mode: "transaction",
693-
transaction: props.transaction,
699+
transaction: screen.transaction,
694700
}}
695701
/>
696702
);
@@ -716,8 +722,8 @@ function TransactionWidgetContent(
716722
}}
717723
onComplete={(completedStatuses) => {
718724
setScreen({
725+
...screen,
719726
id: "buy:5.success",
720-
preparedQuote: screen.preparedQuote,
721727
completedStatuses,
722728
});
723729
}}
@@ -734,10 +740,10 @@ function TransactionWidgetContent(
734740
// from props
735741
client={props.client}
736742
hasPaymentId={!!props.paymentLinkId}
737-
completedStatuses={screen.completedStatuses}
738743
// others
744+
completedStatuses={screen.completedStatuses}
739745
onDone={() => {
740-
setScreen({ id: "execute-tx", transaction: props.transaction });
746+
setScreen({ id: "execute-tx", transaction: screen.transaction });
741747
}}
742748
preparedQuote={screen.preparedQuote}
743749
showContinueWithTx={true}

packages/thirdweb/src/react/web/ui/Bridge/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,7 @@ export type ModeInfo =
2020
| {
2121
mode: "fund_wallet";
2222
};
23+
24+
export type RequiredParams<T extends object, keys extends keyof T> = T & {
25+
[K in keys]-?: T[K];
26+
};

0 commit comments

Comments
 (0)