-
Notifications
You must be signed in to change notification settings - Fork 537
[Dashboard] Feature: Setup payment link UI #7121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. |
WalkthroughThis update introduces support for payment link tracking and handling across the dashboard and SDK. It adds new APIs and types for fetching payment link data, updates buy/sell/transfer/onramp flows to accept and propagate a Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant PayPage
participant API
participant ThirdwebClient
participant PayPageEmbed
User->>PayPage: Access /pay/[id] with paymentId
PayPage->>API: getPaymentLink({ paymentId })
API-->>PayPage: PaymentLink data
PayPage->>ThirdwebClient: getContract(token address, chainId)
ThirdwebClient-->>PayPage: Token metadata
PayPage->>PayPageEmbed: Render with payment details and paymentLinkId
PayPageEmbed->>ThirdwebClient: Handle payment flow (with paymentLinkId)
sequenceDiagram
participant UIComponent
participant Buy/Sell/Transfer/Onramp Prepare
participant Bridge API
UIComponent->>Buy/Sell/Transfer/Onramp Prepare: prepare({ ..., paymentLinkId })
Buy/Sell/Transfer/Onramp Prepare->>Bridge API: POST /prepare (includes paymentLinkId)
Bridge API-->>Buy/Sell/Transfer/Onramp Prepare: Response
Buy/Sell/Transfer/Onramp Prepare-->>UIComponent: Result
Suggested reviewers
Warning Review ran into problems🔥 ProblemsErrors were encountered while retrieving linked issues. Errors (1)
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (3)
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🔭 Outside diff range comments (1)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/page.tsx (1)
523-529
:⚠️ Potential issueInconsistent trend calculation in TotalSponsoredCard function.
While the
AppHighlightsCard
function has been updated to use the first data point as the baseline for trend calculation and require only 2 data points, theTotalSponsoredCard
function still uses the old method (requiring 3 data points and comparing with the third-to-last point).Update the trend calculation in the
TotalSponsoredCard
function to match the new pattern for consistency:trendFn={(data, key) => - data.filter((d) => (d[key] as number) > 0).length >= 3 + data.filter((d) => (d[key] as number) > 0).length >= 2 ? ((data[data.length - 2]?.[key] as number) ?? 0) / - ((data[data.length - 3]?.[key] as number) ?? 0) - + (Math.max(0.0001, (data[0]?.[key] as number) ?? 0.0001)) - 1 : undefined }
🧹 Nitpick comments (5)
apps/dashboard/src/@/api/universal-bridge/links.ts (3)
4-16
: Consider typingpurchaseData
more specificallyThe
PaymentLink
type usesunknown
for thepurchaseData
property. If the structure of this data is known, consider defining a more specific type to improve type safety and developer experience.
18-36
: Enhance error handling in getPaymentLink functionThe current error handling just throws the raw text response, which might not be user-friendly or provide enough context for debugging.
Consider improving the error handling with more structured errors:
if (!res.ok) { const text = await res.text(); - throw new Error(text); + throw new Error(`Failed to fetch payment link (${res.status}): ${text}`); }
21-27
: Consider adding request timeout and retry logicNetwork requests can hang or fail, especially in poor network conditions.
Consider adding a timeout and potentially retry logic for the fetch request:
const res = await fetch(`${UB_BASE_URL}/v1/links/${props.paymentId}`, { method: "GET", headers: { "Content-Type": "application/json", "x-secret-key": DASHBOARD_THIRDWEB_SECRET_KEY, }, + signal: AbortSignal.timeout(10000), // 10-second timeout });
apps/dashboard/src/app/pay/[id]/page.tsx (1)
37-38
: Address ESLint disabling commentThe code uses an ESLint disable comment for
defineChain
, suggesting potential issues with that usage. If possible, consider addressing the underlying issue rather than disabling the lint rule.apps/dashboard/src/app/pay/components/client/PayPageEmbed.client.tsx (1)
28-29
: Remove unusedclientId
prop from component type definitionThe
clientId
prop is defined in the component type definition but isn't used in the component implementation. This might confuse other developers.redirectUri?: string; - clientId: string; theme?: "light" | "dark";
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (28)
apps/dashboard/src/@/api/universal-bridge/links.ts
(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/(team)/_components/TotalSponsoredCard.tsx
(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/(team)/_components/TransactionsCard.tsx
(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/analytics/page.tsx
(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/page.tsx
(1 hunks)apps/dashboard/src/app/nebula-app/(app)/utils/nebulaThirdwebClient.ts
(2 hunks)apps/dashboard/src/app/pay/[id]/page.tsx
(1 hunks)apps/dashboard/src/app/pay/components/client/PayPageEmbed.client.tsx
(2 hunks)apps/dashboard/src/app/pay/components/client/PaymentLinkForm.client.tsx
(8 hunks)apps/dashboard/src/app/pay/constants.ts
(1 hunks)apps/dashboard/src/app/pay/page.tsx
(3 hunks)apps/dashboard/src/constants/urls.ts
(0 hunks)packages/thirdweb/src/bridge/Buy.ts
(3 hunks)packages/thirdweb/src/bridge/Onramp.ts
(4 hunks)packages/thirdweb/src/bridge/Sell.ts
(3 hunks)packages/thirdweb/src/bridge/Transfer.ts
(3 hunks)packages/thirdweb/src/pay/buyWithCrypto/getQuote.ts
(3 hunks)packages/thirdweb/src/pay/buyWithCrypto/getTransfer.ts
(2 hunks)packages/thirdweb/src/pay/buyWithFiat/getPostOnRampQuote.ts
(3 hunks)packages/thirdweb/src/pay/buyWithFiat/getQuote.ts
(2 hunks)packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx
(6 hunks)packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.tsx
(3 hunks)packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.tsx
(3 hunks)packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.tsx
(2 hunks)packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx
(3 hunks)packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.tsx
(1 hunks)packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.ts
(1 hunks)packages/thirdweb/src/react/web/ui/PayEmbed.tsx
(2 hunks)
💤 Files with no reviewable changes (1)
- apps/dashboard/src/constants/urls.ts
🧰 Additional context used
🧬 Code Graph Analysis (5)
apps/dashboard/src/app/nebula-app/(app)/utils/nebulaThirdwebClient.ts (1)
apps/dashboard/src/constants/urls.ts (1)
THIRDWEB_BRIDGE_URL
(27-28)
apps/dashboard/src/@/api/universal-bridge/links.ts (2)
apps/dashboard/src/@/api/universal-bridge/constants.ts (1)
UB_BASE_URL
(1-1)apps/dashboard/src/@/constants/server-envs.ts (1)
DASHBOARD_THIRDWEB_SECRET_KEY
(8-9)
apps/dashboard/src/app/pay/page.tsx (1)
apps/dashboard/src/app/pay/constants.ts (1)
payAppThirdwebClient
(45-45)
apps/dashboard/src/app/pay/constants.ts (2)
apps/dashboard/src/constants/urls.ts (8)
THIRDWEB_RPC_DOMAIN
(12-13)THIRDWEB_INAPP_WALLET_DOMAIN
(8-10)THIRDWEB_PAY_DOMAIN
(5-6)THIRDWEB_STORAGE_DOMAIN
(15-16)THIRDWEB_SOCIAL_API_DOMAIN
(18-19)THIRDWEB_BUNDLER_DOMAIN
(21-22)THIRDWEB_INSIGHT_API_DOMAIN
(24-25)THIRDWEB_BRIDGE_URL
(27-28)apps/dashboard/src/@/constants/public-envs.ts (2)
NET_PUBLIC_DASHBOARD_THIRDWEB_CLIENT_ID
(1-2)NEXT_PUBLIC_IPFS_GATEWAY_URL
(13-15)
apps/dashboard/src/app/pay/components/client/PaymentLinkForm.client.tsx (1)
apps/dashboard/src/app/pay/constants.ts (1)
payAppThirdwebClient
(45-45)
⏰ Context from checks skipped due to timeout of 90000ms (8)
- GitHub Check: Unit Tests
- GitHub Check: E2E Tests (pnpm, esbuild)
- GitHub Check: E2E Tests (pnpm, webpack)
- GitHub Check: Size
- GitHub Check: E2E Tests (pnpm, vite)
- GitHub Check: Lint Packages
- GitHub Check: Build Packages
- GitHub Check: Analyze (javascript)
🔇 Additional comments (49)
apps/dashboard/src/app/(app)/team/[team_slug]/(team)/_components/TransactionsCard.tsx (1)
122-125
: Trend calculation changed to use the first data point as baseline.The trend calculation now compares the second-to-last data point with the first data point, and requires only 2 data points instead of 3. This changes the trend from showing recent momentum to showing overall change throughout the entire time period.
Consider handling edge cases where the first data point is zero or very small, which could lead to division by zero or exaggerated trend values:
trendFn={(data, key) => data.filter((d) => (d[key] as number) > 0).length >= 2 ? ((data[data.length - 2]?.[key] as number) ?? 0) / - ((data[0]?.[key] as number) ?? 0) - + (Math.max(0.0001, (data[0]?.[key] as number) ?? 0.0001)) - 1 : undefined }apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/analytics/page.tsx (2)
323-328
: Improved aggregation for active users metric.The aggregation function now correctly handles the
activeUsers
metric by returning the maximum value rather than summing, which prevents double-counting users across time periods.
330-333
: Trend calculation changed to use the first data point as baseline.The trend calculation now compares the second-to-last data point with the first data point, and requires only 2 data points instead of 3. This changes the trend from showing recent momentum to showing overall change throughout the entire time period.
Consider handling edge cases where the first data point is zero or very small, which could lead to division by zero or exaggerated trend values:
trendFn={(data, key) => data.filter((d) => (d[key] as number) > 0).length >= 2 ? ((data[data.length - 2]?.[key] as number) ?? 0) / - ((data[0]?.[key] as number) ?? 0) - + (Math.max(0.0001, (data[0]?.[key] as number) ?? 0.0001)) - 1 : undefined }apps/dashboard/src/app/(app)/team/[team_slug]/(team)/_components/TotalSponsoredCard.tsx (1)
121-124
: Trend calculation changed to use the first data point as baseline.The trend calculation now compares the second-to-last data point with the first data point, and requires only 2 data points instead of 3. This changes the trend from showing recent momentum to showing overall change throughout the entire time period.
Consider handling edge cases where the first data point is zero or very small, which could lead to division by zero or exaggerated trend values:
trendFn={(data, key) => data.filter((d) => (d[key] as number) > 0).length >= 2 ? ((data[data.length - 2]?.[key] as number) ?? 0) / - ((data[0]?.[key] as number) ?? 0) - + (Math.max(0.0001, (data[0]?.[key] as number) ?? 0.0001)) - 1 : undefined }apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/page.tsx (2)
379-384
: Improved aggregation for active users metric.The aggregation function now correctly handles the
activeUsers
metric by returning the maximum value rather than summing, which prevents double-counting users across time periods.
386-389
: Trend calculation changed to use the first data point as baseline.The trend calculation now compares the second-to-last data point with the first data point, and requires only 2 data points instead of 3. This changes the trend from showing recent momentum to showing overall change throughout the entire time period.
Consider handling edge cases where the first data point is zero or very small, which could lead to division by zero or exaggerated trend values:
trendFn={(data, key) => data.filter((d) => (d[key] as number) > 0).length >= 2 ? ((data[data.length - 2]?.[key] as number) ?? 0) / - ((data[0]?.[key] as number) ?? 0) - + (Math.max(0.0001, (data[0]?.[key] as number) ?? 0.0001)) - 1 : undefined }packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.ts (1)
39-39
: Improved numeric literal readabilityThe change from
1000000
to1_000_000
uses numeric separators (introduced in ES2021) to make large numbers more readable without changing their value.apps/dashboard/src/app/nebula-app/(app)/utils/nebulaThirdwebClient.ts (1)
6-6
: Bridge domain configuration added for non-production environmentsThe addition of
THIRDWEB_BRIDGE_URL
import and its usage insetThirdwebDomains
enables proper integration with bridge services in non-production environments, supporting the payment link functionality.Also applies to: 31-31
packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.tsx (1)
26-26
: Payment link tracking support addedThe addition of the optional
paymentLinkId
parameter toTransferFlowProps
enables tracking or identification of payment links throughout the transaction flow.packages/thirdweb/src/react/web/ui/PayEmbed.tsx (1)
148-151
: Payment link ID propagation implementedThe new optional
paymentLinkId
prop has been added toPayEmbedProps
and is correctly passed down to theBuyScreen
component, enabling end-to-end payment link tracking through the UI component hierarchy.Also applies to: 373-373
packages/thirdweb/src/pay/buyWithFiat/getQuote.ts (2)
98-102
: Properly defined new optional parameter.The
paymentLinkId
optional parameter is correctly added with appropriate JSDoc documentation and typing.
329-329
: Correctly forwarding paymentLinkId parameter.The
paymentLinkId
parameter is properly passed to theprepareOnramp
function, ensuring it's included in the onramp preparation process.packages/thirdweb/src/pay/buyWithCrypto/getQuote.ts (3)
87-90
: Properly defined new optional parameter.The
paymentLinkId
optional parameter is correctly added with appropriate JSDoc documentation and typing.
211-211
: Correctly forwarding paymentLinkId parameter in Buy flow.The
paymentLinkId
parameter is properly passed to theBridge.Buy.prepare
function whentoAmount
is provided.
233-233
: Correctly forwarding paymentLinkId parameter in Sell flow.The
paymentLinkId
parameter is properly passed to theBridge.Sell.prepare
function whenfromAmount
is provided.packages/thirdweb/src/pay/buyWithCrypto/getTransfer.ts (2)
64-67
: Properly defined new optional parameter.The
paymentLinkId
optional parameter is correctly added with appropriate JSDoc documentation and typing.
135-135
: Correctly forwarding paymentLinkId parameter.The
paymentLinkId
parameter is properly passed to theTransfer.prepare
function, ensuring it's included in the transfer preparation process.packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx (3)
55-55
: Properly defined new optional parameter in props interface.The
paymentLinkId
parameter is correctly added to the component props interface with appropriate typing.
74-74
: Correctly destructuring the new parameter from props.The
paymentLinkId
parameter is properly destructured from the component props.
110-110
: Correctly passing paymentLinkId to API function.The
paymentLinkId
parameter is properly passed to thegetBuyWithCryptoTransfer
function, ensuring it's included in the transfer request.packages/thirdweb/src/bridge/Transfer.ts (3)
192-192
: Correctly propagates payment link tracking information.The
paymentLinkId
parameter is properly added to the destructured options, enabling payment link tracking for transfer operations.
212-212
: Parameter correctly included in API request.The
paymentLinkId
is properly passed to the backend API in the request body, ensuring consistent tracking through the server-side processing.
259-263
: Type definition is properly documented.The optional
paymentLinkId
parameter is correctly typed as a string and marked with the@hidden
JSDoc tag, indicating this is an internal parameter not meant for regular API documentation.packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.tsx (2)
58-58
: Component prop correctly defined.The
paymentLinkId
prop is properly typed asundefined | string
, maintaining type safety while allowing for the optional nature of the parameter.
125-125
: Parameter correctly forwarded to quote request.The
paymentLinkId
is properly included in thequoteParams
object, ensuring it's passed to theuseBuyWithCryptoQuote
hook for consistent tracking throughout the buy flow.apps/dashboard/src/app/pay/page.tsx (2)
9-9
: Import of centralized client.The import of
payAppThirdwebClient
aligns with the effort to standardize client usage in the pay app.
23-23
: Improved function naming.Renaming from
RoutesPage
toPayPage
improves semantic clarity by more accurately reflecting the component's purpose.packages/thirdweb/src/pay/buyWithFiat/getPostOnRampQuote.ts (3)
25-28
: Parameter correctly documented.The
paymentLinkId
parameter is properly added to the type definition with appropriate JSDoc documentation, maintaining API consistency.
69-69
: Function signature updated.The function signature is correctly updated to include the new
paymentLinkId
parameter.
86-86
: Parameter correctly forwarded.The
paymentLinkId
is properly passed to the underlyinggetBuyWithCryptoQuote
function, ensuring consistent tracking throughout the payment flow.packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.tsx (1)
53-53
: Integration of payment link tracking looks good!The
paymentLinkId
prop has been correctly added to the component props, properly destructured, and passed to theuseBuyWithFiatQuote
hook, enabling payment link context tracking in the fiat purchase flow.Also applies to: 64-64, 104-104
packages/thirdweb/src/bridge/Buy.ts (1)
335-335
: Payment link integration in Buy bridge implemented correctly.The
paymentLinkId
parameter is properly integrated into the bridge API call for buying assets. The parameter is correctly marked as optional and hidden in the type definition, suggesting it's an internal implementation detail.Also applies to: 357-357, 407-411
packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx (2)
86-86
: Props interface extension looks good.The
paymentLinkId
prop has been properly added to bothBuyScreenProps
andBuyScreenContentProps
interfaces, correctly typed as optional.Also applies to: 155-155
352-352
: Correct prop propagation throughout component hierarchy.The
paymentLinkId
prop is properly passed down to all relevant child components (OnRampScreen
,TransferFlow
,SwapScreenContent
, andFiatScreenContent
), ensuring consistent payment link tracking throughout the user flow.Also applies to: 401-401, 537-537, 593-593
packages/thirdweb/src/bridge/Sell.ts (1)
326-326
: Payment link integration in Sell bridge implemented correctly.The
paymentLinkId
parameter is properly integrated into the bridge API call for selling assets. The parameter is correctly marked as optional and hidden in the type definition, consistent with the implementation in the Buy bridge.Also applies to: 348-348, 400-403
apps/dashboard/src/app/pay/constants.ts (3)
1-17
: LGTM: Comprehensive import of required dependenciesThe imports are well-organized, properly grouping related constants and including all necessary utilities for client configuration.
19-43
: Well-structured client initialization functionGood implementation of
getPayThirdwebClient()
with proper environment detection and conditional domain configuration for non-production environments.
45-46
: Effective singleton pattern for client instanceCreating the Thirdweb client once and exporting it as a constant ensures consistent client usage across components, reducing redundant client initializations.
packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.tsx (2)
74-74
: LGTM: Added optional paymentLinkId parameterProperly extends the component props interface with an optional paymentLinkId parameter.
651-651
: LGTM: Correctly passing paymentLinkId to quote functionThe
paymentLinkId
is properly passed to thegetBuyWithCryptoQuote
function, ensuring it's included in the API request.apps/dashboard/src/app/pay/components/client/PaymentLinkForm.client.tsx (3)
11-11
: Good refactoring: Using centralized client instanceReplaced dynamic client creation with the centralized
payAppThirdwebClient
. This simplifies the code and ensures consistent client configuration.
90-90
: Consistent replacement of client referencesAll occurrences of the old client variable have been consistently replaced with
payAppThirdwebClient
.Also applies to: 103-103, 136-136, 148-148, 196-196, 210-210
125-125
: Correctly updated dependency arrayThe dependency array has been properly updated to remove the client reference, which is no longer a dependency of the callback.
packages/thirdweb/src/bridge/Onramp.ts (4)
54-54
: LGTM: Extended interface with paymentLinkIdProperly extends the
OnrampApiRequestBody
interface with an optionalpaymentLinkId
property.
146-146
: LGTM: Added paymentLinkId to destructured optionsCorrectly extracts the
paymentLinkId
parameter from the options object.
185-187
: LGTM: Properly handling paymentLinkId in request bodyCorrectly adds the
paymentLinkId
to the API request body only when it's defined, following the pattern established for other optional parameters.
246-249
: LGTM: Well-documented type extensionGood use of JSDoc comment with
@hidden
tag to indicate this is an internal parameter not meant for public API documentation.apps/dashboard/src/app/pay/components/client/PayPageEmbed.client.tsx (2)
43-47
: LGTM: Centralized client usage improves consistencyGood refactoring to use the centralized
payAppThirdwebClient
for bothAutoConnect
andPayEmbed
components, and properly passing the newpaymentLinkId
prop to track payment links.
12-22
: LGTM: Properly added optional payment link trackingGood implementation of the optional
paymentLinkId
prop in both the component interface and type definition. This allows for better tracking of payment links throughout the system.
packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/fiat/OnRampScreen.tsx
Show resolved
Hide resolved
- Modified PaymentLink type to allow 'amount' to be optional. - Updated getPaymentLink function to handle undefined amounts correctly. - Adjusted PayPage and PayPageEmbed components to accommodate changes in amount handling, ensuring proper conversion and default values.
🦋 Changeset detectedLatest commit: 99f2e72 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
…Screen props - Replaced the client initialization in PayPage to use `payAppThirdwebClient` instead of `getClientThirdwebClient`. - Updated OnRampScreen to accept and utilize `paymentLinkId` prop, enhancing the component's functionality for payment link handling.
size-limit report 📦
|
Codecov ReportAttention: Patch coverage is
❌ Your patch status has failed because the patch coverage (23.33%) is below the target coverage (80.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #7121 +/- ##
==========================================
- Coverage 55.59% 55.58% -0.02%
==========================================
Files 901 902 +1
Lines 58121 58162 +41
Branches 4068 4086 +18
==========================================
+ Hits 32315 32329 +14
- Misses 25701 25731 +30
+ Partials 105 102 -3
🚀 New features to boost your workflow:
|
- Added import statement for "server-only" in links.ts to ensure server-side rendering compatibility.
🤖 Generated with Claude Code
PR-Codex overview
This PR focuses on adding support for payment links in the
thirdweb
library, enhancing payment functionalities across various components and screens.Detailed summary
paymentLinkId
in multiple components and functions.TransferFlow
,PayEmbed
,TransferConfirmationScreen
, and others to handlepaymentLinkId
.getPaymentLink
function to fetch payment link details.payAppThirdwebClient
.Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Chores