Skip to content

Commit 02d48e3

Browse files
committed
[MNY-243] Update /pay page to render BuyWidget
1 parent 77e1de7 commit 02d48e3

File tree

10 files changed

+293
-624
lines changed

10 files changed

+293
-624
lines changed

apps/dashboard/src/app/bridge/components/client/UniversalBridgeEmbed.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const bridgeWallets = [
1515
createWallet("me.rainbow"),
1616
createWallet("io.rabby"),
1717
createWallet("io.zerion.wallet"),
18+
createWallet("com.okex.wallet"),
1819
];
1920

2021
export function UniversalBridgeEmbed(props: {

apps/dashboard/src/app/login/LoginPage.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const loginOptions = [
4949
createWallet("io.rabby"),
5050
createWallet("me.rainbow"),
5151
createWallet("io.zerion.wallet"),
52+
createWallet("com.okex.wallet"),
5253
];
5354

5455
const inAppWalletLoginOptions = [

apps/dashboard/src/app/pay/[id]/page.tsx

Lines changed: 129 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -81,137 +81,146 @@ export default async function PayPage({
8181
}
8282

8383
return (
84-
<ThemeProvider
85-
forcedTheme={theme === "light" ? "light" : "dark"}
86-
attribute="class"
87-
disableTransitionOnChange
88-
enableSystem={false}
89-
>
90-
<div className="flex z-10 flex-col lg:flex-row h-full w-full">
91-
<header className="min-w-full lg:min-w-[500px] border-b lg:border-r lg:h-full bg-card flex flex-col gap-4 items-start p-4 lg:p-8">
92-
<div>
93-
<div className="flex flex-row items-center justify-start gap-4">
94-
{projectMetadata.image && (
95-
<img
96-
src={
97-
resolveSchemeWithErrorHandler({
98-
uri: projectMetadata.image,
99-
client: payAppThirdwebClient,
100-
}) || ""
101-
}
102-
alt={projectMetadata.name}
103-
width={25}
104-
height={25}
105-
className="rounded-full overflow-hidden"
106-
/>
84+
<div className="relative flex h-dvh w-full items-center justify-center">
85+
<ThemeProvider
86+
forcedTheme={theme === "light" ? "light" : "dark"}
87+
attribute="class"
88+
disableTransitionOnChange
89+
enableSystem={false}
90+
>
91+
<div className="flex z-10 flex-col lg:flex-row h-full w-full">
92+
<header className="min-w-full lg:min-w-[500px] border-b lg:border-r lg:h-full bg-card flex flex-col gap-4 items-start p-4 lg:p-8">
93+
<div>
94+
<div className="flex flex-row items-center justify-start gap-4">
95+
{projectMetadata.image && (
96+
<img
97+
src={
98+
resolveSchemeWithErrorHandler({
99+
uri: projectMetadata.image,
100+
client: payAppThirdwebClient,
101+
}) || ""
102+
}
103+
alt={projectMetadata.name}
104+
width={25}
105+
height={25}
106+
className="rounded-full overflow-hidden"
107+
/>
108+
)}
109+
<h2 className="text-xl font-bold">{projectMetadata.name}</h2>
110+
</div>
111+
{projectMetadata.description && (
112+
<p className="mt-2 text-sm text-muted-foreground">
113+
{projectMetadata.description}
114+
</p>
107115
)}
108-
<h2 className="text-xl font-bold">{projectMetadata.name}</h2>
109116
</div>
110-
{projectMetadata.description && (
111-
<p className="mt-2 text-sm text-muted-foreground">
112-
{projectMetadata.description}
113-
</p>
114-
)}
115-
</div>
116117

117-
<div className="hidden lg:block my-4 w-full">
118-
{paymentLink.amount && (
119-
<div className="flex flex-col gap-1 w-full my-4">
120-
<span className="text-muted-foreground text-xs">Details</span>
121-
<div className="font-medium flex-row flex justify-between items-center w-full">
122-
<div className="flex flex-row items-center gap-2">
123-
{token.iconUri && (
124-
<img
125-
src={resolveSchemeWithErrorHandler({
126-
uri: token.iconUri,
127-
client: getConfiguredThirdwebClient({
128-
secretKey: DASHBOARD_THIRDWEB_SECRET_KEY,
129-
teamId: undefined,
130-
}),
131-
})}
132-
alt={token.name}
133-
width={25}
134-
height={25}
135-
className="size-5 rounded-full overflow-hidden"
136-
/>
137-
)}
138-
{toTokens(BigInt(paymentLink.amount), token.decimals)}{" "}
139-
{token.symbol}
140-
</div>
141-
{token.prices.USD && (
142-
<span>
143-
$
144-
{(
145-
Number(token.prices.USD) *
146-
Number(
147-
toTokens(BigInt(paymentLink.amount), token.decimals),
148-
)
149-
).toFixed(2)}
150-
</span>
151-
)}
152-
</div>
153-
</div>
154-
)}
155-
{chain && (
156-
<div className="flex flex-col gap-1 w-full my-4">
157-
<span className="text-muted-foreground text-xs">Network</span>
158-
<div className="font-medium flex-row flex justify-between items-center w-full">
159-
<div className="flex flex-row items-center gap-2">
160-
{chain.icon?.url && (
161-
<img
162-
src={resolveSchemeWithErrorHandler({
163-
uri: chain.icon.url,
164-
client: getConfiguredThirdwebClient({
165-
secretKey: DASHBOARD_THIRDWEB_SECRET_KEY,
166-
teamId: undefined,
167-
}),
168-
})}
169-
alt={chain.name}
170-
width={chain.icon.width}
171-
height={chain.icon.height}
172-
className="size-5 rounded-full overflow-hidden"
173-
/>
118+
<div className="hidden lg:block my-4 w-full">
119+
{paymentLink.amount && (
120+
<div className="flex flex-col gap-1 w-full my-4">
121+
<span className="text-muted-foreground text-xs">Details</span>
122+
<div className="font-medium flex-row flex justify-between items-center w-full">
123+
<div className="flex flex-row items-center gap-2">
124+
{token.iconUri && (
125+
<img
126+
src={resolveSchemeWithErrorHandler({
127+
uri: token.iconUri,
128+
client: getConfiguredThirdwebClient({
129+
secretKey: DASHBOARD_THIRDWEB_SECRET_KEY,
130+
teamId: undefined,
131+
}),
132+
})}
133+
alt={token.name}
134+
width={25}
135+
height={25}
136+
className="size-5 rounded-full overflow-hidden"
137+
/>
138+
)}
139+
{toTokens(BigInt(paymentLink.amount), token.decimals)}{" "}
140+
{token.symbol}
141+
</div>
142+
{token.prices.USD && (
143+
<span>
144+
$
145+
{(
146+
Number(token.prices.USD) *
147+
Number(
148+
toTokens(
149+
BigInt(paymentLink.amount),
150+
token.decimals,
151+
),
152+
)
153+
).toFixed(2)}
154+
</span>
174155
)}
175-
{chain.name}
176156
</div>
177157
</div>
178-
</div>
179-
)}
180-
{recipientEnsOrAddress.ensName ||
181-
(recipientEnsOrAddress.address && (
158+
)}
159+
{chain && (
182160
<div className="flex flex-col gap-1 w-full my-4">
183-
<span className="text-muted-foreground text-xs">Seller</span>
161+
<span className="text-muted-foreground text-xs">Network</span>
184162
<div className="font-medium flex-row flex justify-between items-center w-full">
185-
{recipientEnsOrAddress.ensName ??
186-
shortenAddress(recipientEnsOrAddress.address)}
163+
<div className="flex flex-row items-center gap-2">
164+
{chain.icon?.url && (
165+
<img
166+
src={resolveSchemeWithErrorHandler({
167+
uri: chain.icon.url,
168+
client: getConfiguredThirdwebClient({
169+
secretKey: DASHBOARD_THIRDWEB_SECRET_KEY,
170+
teamId: undefined,
171+
}),
172+
})}
173+
alt={chain.name}
174+
width={chain.icon.width}
175+
height={chain.icon.height}
176+
className="size-5 rounded-full overflow-hidden"
177+
/>
178+
)}
179+
{chain.name}
180+
</div>
187181
</div>
188182
</div>
189-
))}
190-
</div>
183+
)}
184+
{recipientEnsOrAddress.ensName ||
185+
(recipientEnsOrAddress.address && (
186+
<div className="flex flex-col gap-1 w-full my-4">
187+
<span className="text-muted-foreground text-xs">
188+
Seller
189+
</span>
190+
<div className="font-medium flex-row flex justify-between items-center w-full">
191+
{recipientEnsOrAddress.ensName ??
192+
shortenAddress(recipientEnsOrAddress.address)}
193+
</div>
194+
</div>
195+
))}
196+
</div>
191197

192-
<div className="mt-auto hidden lg:block">
193-
<Badge className="flex items-center gap-1.5 bg-purple-100 text-purple-800 border-purple-200 dark:bg-purple-950 dark:text-purple-300 dark:border-purple-800">
194-
<ShieldCheckIcon className="size-3" />
195-
Secured by thirdweb
196-
</Badge>
197-
</div>
198-
</header>
199-
<main className="flex justify-center p-12 w-full items-center">
200-
<PayPageWidget
201-
amount={paymentLink.amount ? BigInt(paymentLink.amount) : undefined}
202-
chainId={Number(paymentLink.destinationToken.chainId)}
203-
clientId={undefined} // Payment links don't need to use the same client ID to be executed
204-
image={paymentLink.imageUrl}
205-
name={paymentLink.title}
206-
paymentLinkId={id}
207-
purchaseData={paymentLink.purchaseData}
208-
recipientAddress={paymentLink.receiver}
209-
redirectUri={redirectUri}
210-
token={token}
211-
/>
212-
</main>
213-
</div>
214-
</ThemeProvider>
198+
<div className="mt-auto hidden lg:block">
199+
<Badge className="flex items-center gap-1.5 bg-purple-100 text-purple-800 border-purple-200 dark:bg-purple-950 dark:text-purple-300 dark:border-purple-800">
200+
<ShieldCheckIcon className="size-3" />
201+
Secured by thirdweb
202+
</Badge>
203+
</div>
204+
</header>
205+
<main className="flex justify-center py-12 w-full items-center grow">
206+
<PayPageWidget
207+
amount={
208+
paymentLink.amount ? BigInt(paymentLink.amount) : undefined
209+
}
210+
chainId={Number(paymentLink.destinationToken.chainId)}
211+
clientId={undefined} // Payment links don't need to use the same client ID to be executed
212+
image={paymentLink.imageUrl}
213+
name={paymentLink.title}
214+
paymentLinkId={id}
215+
purchaseData={paymentLink.purchaseData}
216+
recipientAddress={paymentLink.receiver}
217+
redirectUri={redirectUri}
218+
token={token}
219+
/>
220+
</main>
221+
</div>
222+
</ThemeProvider>
223+
</div>
215224
);
216225
}
217226

0 commit comments

Comments
 (0)